use sqlx::sqlite::SqlitePool; use crate::{ channel::app::Channels, events::{app::Events, broadcaster::Broadcaster as EventBroadcaster}, login::{app::Logins, broadcaster::Broadcaster as LoginBroadcaster}, }; #[derive(Clone)] pub struct App { db: SqlitePool, events: EventBroadcaster, logins: LoginBroadcaster, } impl App { pub fn from(db: SqlitePool) -> Self { let events = EventBroadcaster::default(); let logins = LoginBroadcaster::default(); Self { db, events, logins } } } impl App { pub const fn logins(&self) -> Logins { Logins::new(&self.db, &self.logins) } pub const fn events(&self) -> Events { Events::new(&self.db, &self.events) } pub const fn channels(&self) -> Channels { Channels::new(&self.db, &self.events) } }