cqrs_rust_lib/
snapshot.rs1use 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}