//! 应用状态 use sqlx::SqlitePool; use std::sync::Arc; use tokio::sync::RwLock; use crate::config::SaaSConfig; /// 全局应用状态,通过 Axum State 共享 #[derive(Clone)] pub struct AppState { /// 数据库连接池 pub db: SqlitePool, /// 服务器配置 (可热更新) pub config: Arc>, /// JWT 密钥 pub jwt_secret: secrecy::SecretString, } impl AppState { pub fn new(db: SqlitePool, config: SaaSConfig) -> Self { let jwt_secret = config.jwt_secret(); Self { db, config: Arc::new(RwLock::new(config)), jwt_secret, } } }