feat: Add config loading for master key, global app state, Axum State Registration

This commit is contained in:
2026-06-25 14:26:13 +05:30
parent 34041089d7
commit aa912492c7

View File

@@ -3,6 +3,12 @@ use sqlx::{sqlite::SqlitePoolOptions, SqlitePool};
use std::net::SocketAddr;
use tracing_subscriber::EnvFilter;
#[derive(Clone)]
struct AppState {
pool: SqlitePool,
master_key: String,
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt()
@@ -14,9 +20,15 @@ async fn main() {
dotenvy::dotenv().ok();
let db_url = std::env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite://data.db?mode=rwc".to_string());
tracing::info!("Connecting to database at {}", db_url);
let master_key = std::env::var("SERVER_MASTER_KEY")
.expect("SERVER_MASTER_KEY environment variable must be set");
let db_url = std::env::var("DATABASE_URL")
.unwrap_or_else(|_| "sqlite://data.db?mode=rwc".to_string());
let port = std::env::var("SERVER_PORT").unwrap_or_else(|_| "3000".to_string());
tracing::info!("Connecting to database at {}", db_url);
let pool = SqlitePoolOptions::new()
.max_connections(5)
.connect(&db_url)
@@ -31,13 +43,16 @@ async fn main() {
tracing::info!("Migrations successful.");
let state = AppState {
pool,
master_key,
};
let app = Router::new()
.route("/health", get(|| async { "OK" }))
.with_state(pool);
.with_state(state);
let port = std::env::var("SERVER_PORT").unwrap_or_else(|_| "3000".to_string());
let addr: SocketAddr = format!("0.0.0.0:{}", port).parse().unwrap();
tracing::info!("Listening on {}", addr);
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();