use sqlx::SqlitePool; #[derive(Clone)] pub struct AppState { pub db: SqlitePool, pub jwt_secret: String, pub vapid_private_key_pem: String, pub vapid_public_key: String, } impl AppState { pub fn new(db: SqlitePool, jwt_secret: String, vapid_pem: String, vapid_pub: String) -> Self { Self { db, jwt_secret, vapid_private_key_pem: vapid_pem, vapid_public_key: vapid_pub, } } } pub fn jwt_secret() -> String { std::env::var("JWT_SECRET").unwrap_or_else(|_| "dev-secret-change-me".to_string()) } pub fn database_url() -> String { std::env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite:ayos.db".to_string()) } pub fn static_dir() -> Option { std::env::var("STATIC_DIR").ok() } pub fn port() -> u16 { std::env::var("PORT") .ok() .and_then(|p| p.parse().ok()) .unwrap_or(3001) }