feat: backend MVP (auth/rbac, catalog, orders, fulfillment, invoices) + specs + scaffolds

This commit is contained in:
Chengdong Zhang
2026-09-17 12:43:22 +08:00
commit dc9fd31c5e
96 changed files with 17550 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
use sqlx::PgPool;
#[derive(Clone)]
pub struct AppState {
pub db: PgPool,
pub redis: redis::aio::ConnectionManager,
pub config: crate::config::Config,
}
pub async fn build_state(config: &crate::config::Config) -> anyhow::Result<AppState> {
let db = PgPool::connect(&config.database_url).await?;
let client = redis::Client::open(config.redis_url.clone())?;
let redis = redis::aio::ConnectionManager::new(client).await?;
Ok(AppState {
db,
redis,
config: config.clone(),
})
}