diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 48 |
1 files changed, 9 insertions, 39 deletions
diff --git a/src/main.rs b/src/main.rs index f2b81ae..1edf738 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,12 @@ +use std::sync::Arc; + use tokio::net::TcpListener; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; -use unnamed_server::state::AppState; - -use crate::config::Config; - -mod config; +use unnamed_server::{state::AppState, Error}; #[tokio::main] #[tracing::instrument] -async fn main() -> Result<(), unnamed_server::Error> { +async fn main() -> Result<(), Error> { tracing_subscriber::registry() .with( tracing_subscriber::EnvFilter::try_from_default_env() @@ -18,43 +16,15 @@ async fn main() -> Result<(), unnamed_server::Error> { .init(); let _ = dotenvy::dotenv(); + let listen_addr = std::env::var("ADDRESS").unwrap_or("127.0.0.1:30000".to_string()); + let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL is not set"); - let config = Config::init(); - - let state = AppState::new(config.database_url).await?; - + let state = Arc::new(AppState::init(&database_url).await?); let app = unnamed_server::router(state); - let listener = TcpListener::bind("127.0.0.1:30000").await?; + let listener = TcpListener::bind(listen_addr).await?; tracing::info!("Server listening on http://{}", listener.local_addr()?); - axum::serve(listener, app) - .with_graceful_shutdown(shutdown_signal()) - .await - .map_err(From::from) -} - -async fn shutdown_signal() { - let ctrl_c = async { - tokio::signal::ctrl_c() - .await - .expect("failed to install Ctrl+C handler"); - }; - - #[cfg(unix)] - let terminate = async { - tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()) - .expect("failed to install signal handler") - .recv() - .await; - }; - - #[cfg(not(unix))] - let terminate = std::future::pending::<()>(); - - tokio::select! { - _ = ctrl_c => {}, - _ = terminate => {}, - } + axum::serve(listener, app).await.map_err(From::from) } |