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