use super::snapshot::Login; use crate::event::{Instant, Sequenced}; #[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)] #[serde(tag = "event", rename_all = "snake_case")] pub enum Event { Created(Created), } impl Sequenced for Event { fn instant(&self) -> Instant { match self { Self::Created(created) => created.instant(), } } } #[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)] pub struct Created { #[serde(flatten)] pub instant: Instant, #[serde(flatten)] pub login: Login, } impl Sequenced for Created { fn instant(&self) -> Instant { self.instant } } impl From for Event { fn from(event: Created) -> Self { Self::Created(event) } }