Skip to main content

gonzalo_domain/
checkpoint.rs

1//! Checkpoint view (opaque snapshot blob + label).
2
3use crate::codec::RecordCodec;
4use gonzalo_core::RecordKind;
5use serde::{Deserialize, Serialize};
6
7/// A checkpoint: a labeled, opaque snapshot payload (base64 or raw text).
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct Checkpoint {
10    pub label: String,
11    pub payload: String,
12}
13impl RecordCodec for Checkpoint {}
14impl Checkpoint {
15    pub const KIND: RecordKind = RecordKind::Checkpoint;
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21    use crate::codec::RecordCodec;
22
23    #[test]
24    fn checkpoint_roundtrips() {
25        let c = Checkpoint {
26            label: "before-refactor".into(),
27            payload: "blob".into(),
28        };
29        assert_eq!(Checkpoint::from_body(&c.to_body().unwrap()).unwrap(), c);
30        assert_eq!(Checkpoint::KIND, RecordKind::Checkpoint);
31    }
32}