1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4pub type SnapshotId = String;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
10pub struct CheckpointMeta {
11 pub source_offset: String,
13 pub current_watermark: DateTime<Utc>,
15 pub snapshot_id: SnapshotId,
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22
23 #[test]
24 fn checkpoint_meta_roundtrip() {
25 let meta = CheckpointMeta {
26 source_offset: "file://path:12345".to_string(),
27 current_watermark: DateTime::<Utc>::from_timestamp(1_700_000_000, 0).unwrap(),
28 snapshot_id: "mem-123".to_string(),
29 };
30 let s = serde_json::to_string(&meta).unwrap();
31 let back: CheckpointMeta = serde_json::from_str(&s).unwrap();
32 assert_eq!(meta, back);
33 }
34}