use log::trace;
use std::{
collections::HashMap,
fmt::Debug,
marker::PhantomData,
};
use crate::commands::ICommand;
use super::i_event::IEvent;
#[derive(Debug, PartialEq, Clone)]
pub struct EventContext<C: ICommand, E: IEvent> {
pub aggregate_id: String,
pub sequence: usize,
pub payload: E,
pub metadata: HashMap<String, String>,
_phantom: PhantomData<C>,
}
impl<C: ICommand, E: IEvent> EventContext<C, E> {
pub fn new(
aggregate_id: String,
sequence: usize,
payload: E,
metadata: HashMap<String, String>,
) -> Self {
let x = Self {
aggregate_id,
sequence,
payload,
metadata,
_phantom: PhantomData,
};
trace!("Created new {:?}", x,);
x
}
}