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 }