nodedb_types/timeseries/
sync.rs1use serde::{Deserialize, Serialize};
6
7use super::series::{LiteId, SeriesId, SeriesKey};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct TimeseriesDelta {
12 pub source_id: LiteId,
14 pub series_id: SeriesId,
16 pub series_key: SeriesKey,
18 pub min_ts: i64,
20 pub max_ts: i64,
22 pub encoded_block: Vec<u8>,
24 pub sample_count: u64,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct LogWalBatch {
31 pub collection: String,
33 pub entries: Vec<(SeriesId, i64, Vec<u8>)>,
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn timeseries_delta_serialization() {
43 let delta = TimeseriesDelta {
44 source_id: "clxyz1234test".into(),
45 series_id: 12345,
46 series_key: SeriesKey::new("cpu", vec![("host".into(), "prod".into())]),
47 min_ts: 1000,
48 max_ts: 2000,
49 encoded_block: vec![1, 2, 3, 4],
50 sample_count: 100,
51 };
52 let json = sonic_rs::to_string(&delta).unwrap();
53 let back: TimeseriesDelta = sonic_rs::from_str(&json).unwrap();
54 assert_eq!(back.source_id, "clxyz1234test");
55 assert_eq!(back.series_id, 12345);
56 assert_eq!(back.sample_count, 100);
57 }
58}