feat: Add config loading for master key, global app state, Axum State Registration
This commit is contained in:
25
src/main.rs
25
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();
|
||||
|
||||
Reference in New Issue
Block a user