use serde::{Deserialize, Serialize};
use super::series::{LiteId, SeriesId, SeriesKey};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TimeseriesDelta {
pub source_id: LiteId,
pub series_id: SeriesId,
pub series_key: SeriesKey,
pub min_ts: i64,
pub max_ts: i64,
pub encoded_block: Vec<u8>,
pub sample_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LogWalBatch {
pub collection: String,
pub entries: Vec<(SeriesId, i64, Vec<u8>)>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn timeseries_delta_serialization() {
let delta = TimeseriesDelta {
source_id: "clxyz1234test".into(),
series_id: 12345,
series_key: SeriesKey::new("cpu", vec![("host".into(), "prod".into())]),
min_ts: 1000,
max_ts: 2000,
encoded_block: vec![1, 2, 3, 4],
sample_count: 100,
};
let json = sonic_rs::to_string(&delta).unwrap();
let back: TimeseriesDelta = sonic_rs::from_str(&json).unwrap();
assert_eq!(back.source_id, "clxyz1234test");
assert_eq!(back.series_id, 12345);
assert_eq!(back.sample_count, 100);
}
}