From aa912492c7b54dc83c03cc0544014bda030e39dc Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Thu, 25 Jun 2026 14:26:13 +0530 Subject: [PATCH] feat: Add config loading for master key, global app state, Axum State Registration --- src/main.rs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9cce46d..71f4c68 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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();