From ce0c5032ba3b5ef6d5462edc2f96169fd24dbfe8 Mon Sep 17 00:00:00 2001 From: BloxerHD018 Date: Thu, 14 Aug 2025 18:46:19 +0100 Subject: [PATCH] Feat: Allow Deleting Account via JSON API --- src/json_api/users/delete.rs | 23 +++++++++++++++++++++++ src/json_api/users/mod.rs | 3 ++- src/main.rs | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/json_api/users/delete.rs diff --git a/src/json_api/users/delete.rs b/src/json_api/users/delete.rs new file mode 100644 index 0000000..b58cbce --- /dev/null +++ b/src/json_api/users/delete.rs @@ -0,0 +1,23 @@ +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, auth: Auth) -> 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(()) + } +} diff --git a/src/json_api/users/mod.rs b/src/json_api/users/mod.rs index 34c6950..b284f7e 100644 --- a/src/json_api/users/mod.rs +++ b/src/json_api/users/mod.rs @@ -1,2 +1,3 @@ pub mod profile; -pub mod mii; \ No newline at end of file +pub mod mii; +pub mod delete; \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index b99b164..0c16943 100644 --- a/src/main.rs +++ b/src/main.rs @@ -151,6 +151,7 @@ async fn launch() -> _ { json_api::oauth::generate_token::generate_token, json_api::users::profile::get_own_profile, json_api::users::mii::get_mii_data_by_pid, + json_api::users::delete::delete_account, papi::login::login, papi::user::get_user, nnid::people::thing,