1use std::collections::HashMap;
4use std::path::PathBuf;
5use std::sync::Arc;
6
7use tokio::sync::{broadcast, Mutex};
8use tuitbot_core::automation::circuit_breaker::CircuitBreaker;
9use tuitbot_core::automation::Runtime;
10use tuitbot_core::content::ContentGenerator;
11use tuitbot_core::storage::DbPool;
12
13use crate::ws::WsEvent;
14
15pub struct AppState {
17 pub db: DbPool,
19 pub config_path: PathBuf,
21 pub data_dir: PathBuf,
23 pub event_tx: broadcast::Sender<WsEvent>,
25 pub api_token: String,
27 pub runtimes: Mutex<HashMap<String, Runtime>>,
29 pub content_generators: Mutex<HashMap<String, Arc<ContentGenerator>>>,
31 pub circuit_breaker: Option<Arc<CircuitBreaker>>,
33}