use std::sync::Arc; use config::AppConfig; use db::AppDatabase; #[derive(Clone)] pub struct ChatService { pub(crate) database: Arc, pub(crate) media: crate::services::media::Media, pub(crate) audience: crate::services::audience::Audience, pub(crate) settings: ChatSettings, pub(crate) participants: crate::services::presence::Participants, pub(crate) space: space::services::service::SpaceService, } impl ChatService { pub fn new( database: Arc, media: crate::services::media::Media, audience: crate::services::audience::Audience, settings: ChatSettings, participants: crate::services::presence::Participants, space: space::services::service::SpaceService, ) -> Self { Self { database, media, audience, settings, participants, space, } } } #[derive(Clone)] pub struct ChatSettings { pub chat: config::chat::ChatConfig, pub web: config::web::WebConfig, pub livekit: config::livekit::LiveKitConfig, } impl ChatSettings { pub fn from_config(config: &AppConfig) -> Self { Self { chat: config.chat.clone(), web: config.web.clone(), livekit: config.livekit.clone(), } } }