api/routes/test/
delete.rs1use axum::{
2 extract::{Path, State},
3 http::StatusCode,
4 response::IntoResponse,
5 Json,
6};
7use sea_orm::{ActiveModelTrait, EntityTrait};
8use util::state::AppState;
9
10use crate::response::ApiResponse;
11use db::models::user::{ActiveModel as UserActiveModel, Entity as UserEntity};
12
13pub async fn delete_user(
36 State(app): State<AppState>,
37 Path(user_id): Path<i32>,
38) -> impl IntoResponse {
39 let db = app.db();
40
41 match UserEntity::find_by_id(user_id).one(db).await {
42 Ok(Some(user)) => {
43 let am: UserActiveModel = user.into();
44 if let Err(e) = am.delete(db).await {
45 return (
46 StatusCode::INTERNAL_SERVER_ERROR,
47 Json(ApiResponse::<()>::error(format!("Database error: {e}"))),
48 )
49 .into_response();
50 }
51 (
52 StatusCode::OK,
53 Json(ApiResponse::<()>::success((), "User deleted")),
54 )
55 .into_response()
56 }
57 Ok(None) => (
58 StatusCode::NOT_FOUND,
59 Json(ApiResponse::<()>::error("User not found")),
60 )
61 .into_response(),
62 Err(e) => (
63 StatusCode::INTERNAL_SERVER_ERROR,
64 Json(ApiResponse::<()>::error(format!("Database error: {e}"))),
65 )
66 .into_response(),
67 }
68}