weavatrix_memory/domain/
event.rs1use super::{Evidence, MemoryFact, MemoryNode};
2use crate::{id::FactId, time::Timestamp};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(tag = "type", rename_all = "snake_case")]
7pub enum MemoryEvent {
8 NodeUpserted {
9 node: MemoryNode,
10 },
11 FactRecorded {
12 fact: MemoryFact,
13 },
14 FactRetracted {
15 fact_id: FactId,
16 valid_until: Timestamp,
17 evidence: Vec<Evidence>,
18 },
19}
20
21impl MemoryEvent {
22 #[must_use]
23 pub const fn event_type(&self) -> &'static str {
24 match self {
25 Self::NodeUpserted { .. } => "node_upserted",
26 Self::FactRecorded { .. } => "fact_recorded",
27 Self::FactRetracted { .. } => "fact_retracted",
28 }
29 }
30}