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