cqrs_rust_lib/
denormalizer.rs1use crate::{Aggregate, CqrsContext, CqrsError, EventEnvelope, MaybeSend, MaybeSync};
2use serde::de::DeserializeOwned;
3use serde::Serialize;
4use std::fmt::Debug;
5
6cqrs_async_trait! {
7pub trait Dispatcher<A: Aggregate>: MaybeSend + MaybeSync {
8 async fn dispatch(
9 &self,
10 aggregate_id: &str,
11 events: &[EventEnvelope<A>],
12 context: &CqrsContext,
13 ) -> Result<(), CqrsError>;
14}
15}
16
17pub trait View<A: Aggregate>:
18 Debug + Clone + Default + Serialize + DeserializeOwned + MaybeSend + MaybeSync
19{
20 const TYPE: &'static str;
21 const IS_CHILD_OF_AGGREGATE: bool;
22
23 fn view_id(event: &EventEnvelope<A>) -> String;
24 fn update(&self, event: &EventEnvelope<A>) -> Option<Self>;
25}
26
27pub trait ViewElements<A: Aggregate>: View<A> {
28 fn aggregate_id(&self) -> String;
29}