use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
pub type SnapshotId = String;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct CheckpointMeta {
pub source_offset: String,
pub current_watermark: DateTime<Utc>,
pub snapshot_id: SnapshotId,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn checkpoint_meta_roundtrip() {
let meta = CheckpointMeta {
source_offset: "file://path:12345".to_string(),
current_watermark: DateTime::<Utc>::from_timestamp(1_700_000_000, 0).unwrap(),
snapshot_id: "mem-123".to_string(),
};
let s = serde_json::to_string(&meta).unwrap();
let back: CheckpointMeta = serde_json::from_str(&s).unwrap();
assert_eq!(meta, back);
}
}