keri_core/event/event_data/
interaction.rs

1use super::super::sections::seal::*;
2use crate::database::redb::rkyv_adapter::said_wrapper::SaidValue;
3use crate::error::Error;
4use crate::state::{EventSemantics, IdentifierState};
5use said::SelfAddressingIdentifier;
6use serde::{Deserialize, Serialize};
7
8#[derive(
9    Serialize,
10    Deserialize,
11    Debug,
12    Clone,
13    PartialEq,
14    rkyv::Archive,
15    rkyv::Serialize,
16    rkyv::Deserialize,
17)]
18#[rkyv(derive(Debug))]
19pub struct InteractionEvent {
20    #[serde(rename = "p")]
21    previous_event_hash: SaidValue,
22
23    #[serde(rename = "a")]
24    pub data: Vec<Seal>,
25}
26
27impl InteractionEvent {
28    pub fn new(previous_event_hash: SelfAddressingIdentifier, data: Vec<Seal>) -> Self {
29        InteractionEvent {
30            previous_event_hash: previous_event_hash.into(),
31            data,
32        }
33    }
34
35    pub fn previous_event_hash(&self) -> &SelfAddressingIdentifier {
36        &self.previous_event_hash.said
37    }
38}
39
40impl EventSemantics for InteractionEvent {
41    fn apply_to(&self, state: IdentifierState) -> Result<IdentifierState, Error> {
42        Ok(IdentifierState { ..state })
43    }
44}