summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs48
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)
}