From 7b9dea72e3d2435f75825e8e66a04285332d5aa5 Mon Sep 17 00:00:00 2001 From: Yannick Ulrich Date: Tue, 16 May 2023 22:00:59 +0100 Subject: feat: add delete account option (attempt 2) (#980) * Added DELETE register endpoint * Added remove function to database * Added unregister to client * Updated docs * Renamed functions * Reformatting * Used execute instead of fetch in delete_user --- atuin-server/src/database.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'atuin-server/src/database.rs') diff --git a/atuin-server/src/database.rs b/atuin-server/src/database.rs index 7f3e5dac..e7057f6b 100644 --- a/atuin-server/src/database.rs +++ b/atuin-server/src/database.rs @@ -27,6 +27,7 @@ pub trait Database { async fn get_user(&self, username: &str) -> Result; async fn get_user_session(&self, u: &User) -> Result; async fn add_user(&self, user: &NewUser) -> Result; + async fn delete_user(&self, u: &User) -> Result<()>; async fn count_history(&self, user: &User) -> Result; async fn count_history_cached(&self, user: &User) -> Result; @@ -336,6 +337,26 @@ impl Database for Postgres { Ok(()) } + #[instrument(skip_all)] + async fn delete_user(&self, u: &User) -> Result<()> { + sqlx::query("delete from sessions where user_id = $1") + .bind(u.id) + .execute(&self.pool) + .await?; + + sqlx::query("delete from users where id = $1") + .bind(u.id) + .execute(&self.pool) + .await?; + + sqlx::query("delete from history where user_id = $1") + .bind(u.id) + .execute(&self.pool) + .await?; + + Ok(()) + } + #[instrument(skip_all)] async fn add_user(&self, user: &NewUser) -> Result { let email: &str = &user.email; -- cgit v1.3.1