routes, new_user route
This commit is contained in:
parent
92763fd7dc
commit
949a984d0c
2 changed files with 51 additions and 1 deletions
|
|
@ -1,9 +1,18 @@
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use axum::{Json, Router, response::IntoResponse, routing::get};
|
use axum::{
|
||||||
|
Json,
|
||||||
|
Router,
|
||||||
|
response::IntoResponse,
|
||||||
|
routing::{
|
||||||
|
get,
|
||||||
|
post,
|
||||||
|
},
|
||||||
|
};
|
||||||
use reqwest::StatusCode;
|
use reqwest::StatusCode;
|
||||||
|
|
||||||
mod get_users;
|
mod get_users;
|
||||||
|
mod new_user;
|
||||||
|
|
||||||
use crate::AppState;
|
use crate::AppState;
|
||||||
|
|
||||||
|
|
@ -20,6 +29,7 @@ pub struct ApiError {
|
||||||
pub fn router() -> Router<AppState> {
|
pub fn router() -> Router<AppState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/get_users", get(get_users::handler))
|
.route("/get_users", get(get_users::handler))
|
||||||
|
.route("/new_user", post(new_user::handler))
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IntoResponse for ApiError {
|
impl IntoResponse for ApiError {
|
||||||
|
|
|
||||||
40
koucha/src/bin/webapi/routes/new_user.rs
Normal file
40
koucha/src/bin/webapi/routes/new_user.rs
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
use axum::{Json, extract::State};
|
||||||
|
use koucha::db::User as DbUser;
|
||||||
|
use reqwest::StatusCode;
|
||||||
|
use serde::{Serialize, Deserialize};
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
AppState, routes::{ApiError, ApiResult, ApiResponse}, types::User
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
pub struct Input {
|
||||||
|
user_name: String,
|
||||||
|
}
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub struct Output {
|
||||||
|
user: User,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn handler(
|
||||||
|
State(state): State<AppState>,
|
||||||
|
Json(body): Json<Input>,
|
||||||
|
) -> ApiResult<Output> {
|
||||||
|
let dbuser = DbUser::create(
|
||||||
|
state.adapter.get_pool(),
|
||||||
|
&body.user_name
|
||||||
|
).await.map_err(|_e| {
|
||||||
|
// TODO: Logging
|
||||||
|
ApiError {
|
||||||
|
status: StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
|
error: "InternalError",
|
||||||
|
message: String::from(
|
||||||
|
"Error creating user ".to_owned() + &body.user_name
|
||||||
|
),
|
||||||
|
}
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let user = User { name: dbuser.name().to_string() };
|
||||||
|
|
||||||
|
Ok(ApiResponse(StatusCode::OK, Output { user }))
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue