23 lines
655 B
Rust
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(())
|
|
}
|
|
}
|