account/src/json_api/users/delete.rs

23 lines
655 B
Rust

use crate::Pool;
use crate::account::account::{Auth, User};
use rocket::http::Status;
use rocket::{State, get};
#[get("/api/v2/users/@me/delete")]
pub async fn delete_account(pool: &State<Pool>, auth: Auth<true>) -> Result<(), Status> {
let pool = pool.inner();
let user: User = auth.into();
let result = sqlx::query!(
"DELETE FROM users WHERE username = $1",
user.username
).execute(pool)
.await
.map_err(|_| Status::InternalServerError)?;
if result.rows_affected() == 0 { // Account doesn't exist
Err(Status::NotFound)
} else { // Account existed and was deleted
Ok(())
}
}