mod database; mod routes; mod auth; use axum::{ routing::{get, post}, Router, }; use routes::problem::get_problems; use routes::user::create_user; 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 app = Router::new() .route("/", get(|| async {"Hello World!"})) .route("/problems", get(get_problems)) .route("/user", post(create_user).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() } }