keri_core/event/event_data/
interaction.rs1use 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}