findtheti.me/src/main.rs

61 lines
1.6 KiB
Rust
Raw Normal View History

2024-01-08 20:09:26 +02:00
use std::net::SocketAddr;
use axum::Router;
use dotenv::dotenv;
use tokio::net::TcpListener;
use tower_http::trace::TraceLayer;
use tower_http::{services::ServeDir, trace};
use tracing::Level;
use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
2024-01-08 20:09:26 +02:00
mod api;
mod db;
mod endpoints;
mod entity;
#[tokio::main(flavor = "multi_thread")]
async fn main() {
2024-01-11 14:26:34 +02:00
println!("Starting findtheti.me...");
2024-01-08 20:09:26 +02:00
dotenv().ok();
tracing_subscriber::registry()
.with(fmt::layer())
.with(EnvFilter::from_env("LOG_LEVEL"))
.init();
2024-01-08 20:09:26 +02:00
let api_routes = api::routes().await.expect("Unable to create api routes");
2024-01-09 17:23:40 +02:00
let mut routes = Router::new().nest("/api", api_routes);
2024-01-09 17:23:40 +02:00
// If in release mod, serve static files
if !cfg!(debug_assertions) {
2024-01-11 14:26:34 +02:00
println!("Initializing frontend routes...");
routes = routes
.nest_service("/", ServeDir::new("./frontend/dist"))
2024-01-09 17:23:40 +02:00
.fallback_service(ServeDir::new("./frontend/dist"));
}
2024-01-08 20:09:26 +02:00
2024-01-11 14:26:34 +02:00
println!("Routes initialized...");
let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
2024-01-08 20:09:26 +02:00
let listener = TcpListener::bind(addr).await.unwrap();
2024-01-11 14:26:34 +02:00
println!("Starting server...");
axum::serve(
listener,
routes
.layer(
TraceLayer::new_for_http()
.make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO))
.on_response(trace::DefaultOnResponse::new().level(Level::INFO)),
)
.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
}