mod api; mod err; mod question; use axum::{ http::StatusCode, response::{IntoResponse, Response}, routing::{delete, get, post, put}, Router, }; use std::net::SocketAddr; async fn handle() -> Response { (StatusCode::OK, "Visiting the root").into_response() } #[tokio::main] async fn main() { let store = question::Store::new(); let ip = SocketAddr::new([127, 0, 0, 1].into(), 3000); let listener = tokio::net::TcpListener::bind(ip).await.unwrap(); let apis = Router::new() .route("/question/:id", get(api::read_question)) .route("/questions", get(api::read_all_questions)) .route("/question", post(api::create_question)) .route("/question/:id", put(api::update_question)) .route("/question/:id", delete(api::delete_question)) .route("/answers", post(api::create_answer)) //.nest(path, router) .with_state(store) .fallback(err::handler_404); let app = Router::new().route("/", get(handle)).merge(apis); axum::serve(listener, app).await.unwrap(); }