- 新增 zclaw-saas crate 作为 workspace 成员 - 配置系统 (TOML + 环境变量覆盖) - 错误类型体系 (SaasError 16 变体, IntoResponse) - SQLite 数据库 (12 表 schema, 内存/文件双模式, 3 系统角色种子数据) - JWT 认证 (签发/验证/刷新) - Argon2id 密码哈希 - 认证中间件 (公开/受保护路由分层) - 账号管理 CRUD + API Token 管理 + 操作日志 - 7 单元测试 + 5 集成测试全部通过
29 lines
649 B
Rust
29 lines
649 B
Rust
//! 应用状态
|
|
|
|
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<RwLock<SaaSConfig>>,
|
|
/// 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,
|
|
}
|
|
}
|
|
}
|