Skip to main content

cqrs_rust_lib/
snapshot.rs

1use crate::read::storage::HasId;
2use crate::Aggregate;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Snapshot<A>
8where
9    A: Aggregate,
10{
11    #[serde(rename = "_id")]
12    pub aggregate_id: String,
13    #[serde(deserialize_with = "A::deserialize")]
14    pub state: A,
15    pub version: usize,
16}
17
18impl<A> HasId for Snapshot<A>
19where
20    A: Aggregate,
21{
22    fn field_id() -> &'static str {
23        "_id"
24    }
25
26    fn id(&self) -> &str {
27        self.aggregate_id.as_str()
28    }
29
30    fn parent_field_id() -> Option<&'static str> {
31        None
32    }
33
34    fn parent_id(&self) -> Option<&str> {
35        None
36    }
37}