mod database; mod routes; mod auth; use axum::{ routing::{get, post}, Router, }; use routes::problem::{get_problems, create_problem}; use routes::user::create_user; use tower_http::services::ServeDir; use crate::database::Database; #[derive(Clone)] struct AppState { database: Database, } #[tokio::main] async fn main() { let database = Database::new_in_memory().unwrap(); database.initialize().unwrap(); let state = AppState { database: database, }; let static_files = ServeDir::new("./static"); let app = Router::new() .route("/problem", get(get_problems)) .route("/problem", post(create_problem)) .route("/user", post(create_user)) .nest_service("/static", static_files) .with_state(state); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); axum::serve(listener, app).await.unwrap(); } #[cfg(test)] mod tests { fn test_app() -> String { "hello".into() } }