diff options
| author | Yannick Ulrich <yannick.ulrich@durham.ac.uk> | 2023-05-16 22:00:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-16 22:00:59 +0100 |
| commit | 7b9dea72e3d2435f75825e8e66a04285332d5aa5 (patch) | |
| tree | e2b9ae2f8df86105b09547a55dc7ac455a55c0c8 /atuin-server/src/database.rs | |
| parent | Include bash preexec warning (#983) (diff) | |
| download | atuin-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.rs | 21 |
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; |
