46 lines
1.3 KiB
Rust
46 lines
1.3 KiB
Rust
use dotenv::dotenv;
|
|
use std::env;
|
|
use tracing::info;
|
|
use tracing_subscriber::layer::SubscriberExt;
|
|
|
|
mod db;
|
|
mod errors;
|
|
mod handlers;
|
|
mod models;
|
|
|
|
#[tokio::main(flavor = "current_thread")]
|
|
async fn main() {
|
|
//Parse .env file and add the environmental variables configured there
|
|
dotenv().ok();
|
|
|
|
let subscriber = tracing_subscriber::registry()
|
|
.with(tracing_subscriber::EnvFilter::new(
|
|
std::env::var("INTRASYS_LOG").unwrap_or_else(|_| "info".into()),
|
|
))
|
|
.with(tracing_subscriber::fmt::layer());
|
|
tracing::subscriber::set_global_default(subscriber)
|
|
.expect("Failed to set the global tracing subscriber");
|
|
|
|
let pool = db::create_pool().await.expect("Failed to create pool");
|
|
|
|
// Run migrations
|
|
db::run_migrations(&pool)
|
|
.await
|
|
.expect("Failed to run migrations");
|
|
|
|
// Build the application's routes
|
|
let app = handlers::create_router(pool);
|
|
|
|
// Run the server
|
|
let host = env::var("INTRASYS_HOST").unwrap_or(String::from("127.0.0.1"));
|
|
let port = env::var("INTRASYS_PORT").unwrap_or(String::from("8080"));
|
|
let listener = tokio::net::TcpListener::bind(format!("{host}:{port}"))
|
|
.await
|
|
.unwrap();
|
|
info!("listening on {}", listener.local_addr().unwrap());
|
|
axum::serve(listener, app).await.unwrap();
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|