Skip to content

rust/ingestor/src/model.rs


     1 use serde::{Deserialize, Serialize};
     2 use serde_json::Value;
     3  
     4 #[derive(Debug, Clone, Serialize, Deserialize, Default)]
     5 pub struct Checkpoint {
     6     pub source_name: String,
     7     pub source_file: String,
     8     pub source_inode: u64,
     9     pub source_generation: u32,
    10     pub last_offset: u64,
    11     pub last_line_no: u64,
    12     pub status: String,
    13 }
    14  
    15 #[derive(Debug, Clone, Default)]
    16 pub struct NormalizedRecord {
    17     pub raw_row: Value,
    18     pub event_rows: Vec<Value>,
    19     pub link_rows: Vec<Value>,
    20     pub tool_rows: Vec<Value>,
    21     pub session_hint: String,
    22     pub model_hint: String,
    23 }
    24  
    25 #[derive(Debug, Clone, Default)]
    26 pub struct RowBatch {
    27     pub raw_rows: Vec<Value>,
    28     pub event_rows: Vec<Value>,
    29     pub link_rows: Vec<Value>,
    30     pub tool_rows: Vec<Value>,
    31     pub error_rows: Vec<Value>,
    32     pub checkpoint: Option<Checkpoint>,
    33     pub lines_processed: u64,
    34 }
    35  
    36 impl RowBatch {
    37     pub fn row_count(&self) -> usize {
    38         self.raw_rows.len()
    39             + self.event_rows.len()
    40             + self.link_rows.len()
    41             + self.tool_rows.len()
    42             + self.error_rows.len()
    43     }
    44 }