Skip to main content

mqd_core/
summary.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Default, Serialize, Deserialize)]
4pub struct IngestSummary {
5    pub events_received: u64,
6    pub events_rejected: u64,
7    pub events_sent_by_producers: u64,
8    pub batches_flushed: u64,
9    pub rows_emitted: u64,
10    pub max_batch_rows: u64,
11    pub wall_time_ms: u128,
12    pub cancelled: bool,
13}
14
15#[derive(Clone, Debug, Default, Serialize, Deserialize)]
16pub struct QuerySummary {
17    pub query_type: String,
18    pub candidate_partitions: u64,
19    pub pruned_by_time: u64,
20    pub pruned_by_kind: u64,
21    pub scanned_partitions: u64,
22    pub scanned_rows: u64,
23    pub returned_rows: u64,
24    pub latency_ms: f64,
25}
26
27#[derive(Clone, Debug, Default, Serialize, Deserialize)]
28pub struct RunSummary {
29    pub command: String,
30    pub ingest: Option<IngestSummary>,
31    pub query: Option<QuerySummary>,
32    pub extra: Vec<(String, String)>,
33}
34
35impl RunSummary {
36    pub fn new(command: impl Into<String>) -> Self {
37        Self {
38            command: command.into(),
39            ..Default::default()
40        }
41    }
42
43    pub fn with_ingest(mut self, ingest: IngestSummary) -> Self {
44        self.ingest = Some(ingest);
45        self
46    }
47
48    pub fn with_query(mut self, query: QuerySummary) -> Self {
49        self.query = Some(query);
50        self
51    }
52
53    pub fn note(mut self, key: impl Into<String>, value: impl ToString) -> Self {
54        self.extra.push((key.into(), value.to_string()));
55        self
56    }
57}