use sqlx::sqlite::SqlitePool; use crate::{ channel::app::{Broadcaster, Channels}, index::app::Index, 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 index(&self) -> Index { Index::new(&self.db) } pub const fn logins(&self) -> Logins { Logins::new(&self.db) } pub const fn channels(&self) -> Channels { Channels::new(&self.db, &self.broadcaster) } }