37 lines
1.0 KiB
Rust
37 lines
1.0 KiB
Rust
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();
|
|
}
|