diff options
| author | rtkay123 <dev@kanjala.com> | 2026-02-01 13:33:07 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-02-01 13:33:07 +0200 |
| commit | ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a (patch) | |
| tree | 953f6c49f8affd667ec740a949b2d93f82b7d31b /src/main.rs | |
| parent | 6a9d21bc87f8a738e14f27a1305bf04d0c4b7a0c (diff) | |
| download | sellershut-ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a.tar.bz2 sellershut-ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a.zip | |
feat: conn to db
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index e7a11a9..cb8c2a9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,39 @@ -fn main() { - println!("Hello, world!"); +mod config; +mod logging; +mod server; + +use std::net::{Ipv6Addr, SocketAddr}; + +use clap::Parser; +use tokio::net::TcpListener; +use tracing::info; + +use crate::{config::Config, logging::initialise_logging, server::state::{AppState }}; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + let cli = config::Cli::parse(); + let mut config: Config = if let Some(ref path) = cli.config { + let contents = std::fs::read_to_string(path)?; + toml::from_str(&contents)? + } else { + Default::default() + }; + config.merge_with_cli(&cli); + + initialise_logging(&config); + + let state = AppState::new(&config).await?; + let router = server::router(&config, state).await?; + + let addr = SocketAddr::from((Ipv6Addr::UNSPECIFIED, config.server.port)); + info!(port = addr.port(), "starting server"); + let listener = TcpListener::bind(addr).await?; + + // Run the server with graceful shutdown + axum::serve(listener, router) + .with_graceful_shutdown(server::shutdown::shutdown_signal()) + .await?; + + Ok(()) } |
