aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-server/src/database.rs
diff options
context:
space:
mode:
authorYannick Ulrich <yannick.ulrich@durham.ac.uk>2023-05-16 22:00:59 +0100
committerGitHub <noreply@github.com>2023-05-16 22:00:59 +0100
commit7b9dea72e3d2435f75825e8e66a04285332d5aa5 (patch)
treee2b9ae2f8df86105b09547a55dc7ac455a55c0c8 /atuin-server/src/database.rs
parentInclude bash preexec warning (#983) (diff)
downloadatuin-7b9dea72e3d2435f75825e8e66a04285332d5aa5.zip
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
Diffstat (limited to 'atuin-server/src/database.rs')
-rw-r--r--atuin-server/src/database.rs21
1 files changed, 21 insertions, 0 deletions
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<User>;
async fn get_user_session(&self, u: &User) -> Result<Session>;
async fn add_user(&self, user: &NewUser) -> Result<i64>;
+ async fn delete_user(&self, u: &User) -> Result<()>;
async fn count_history(&self, user: &User) -> Result<i64>;
async fn count_history_cached(&self, user: &User) -> Result<i64>;
@@ -337,6 +338,26 @@ impl Database for Postgres {
}
#[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<i64> {
let email: &str = &user.email;
let username: &str = &user.username;