use crate::{channel, message, user}; pub mod app; mod broadcaster; mod extract; pub mod repo; mod routes; mod sequence; pub use self::{ broadcaster::Broadcaster, routes::router, sequence::{Instant, Sequence, Sequenced}, }; #[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)] #[serde(tag = "type", rename_all = "snake_case")] pub enum Event { User(user::Event), Channel(channel::Event), Message(message::Event), } impl Sequenced for Event { fn instant(&self) -> Instant { match self { Self::User(event) => event.instant(), Self::Channel(event) => event.instant(), Self::Message(event) => event.instant(), } } } impl From for Event { fn from(event: user::Event) -> Self { Self::User(event) } } impl From for Event { fn from(event: channel::Event) -> Self { Self::Channel(event) } } impl From for Event { fn from(event: message::Event) -> Self { Self::Message(event) } }