Add better data removal, fix small benign bug

This commit is contained in:
DaXcess
2024-08-13 11:31:54 +02:00
parent 576e2ef563
commit ef86e1e2d3
5 changed files with 32 additions and 8 deletions
@@ -6,4 +6,5 @@ DROP TABLE "user";
-- Trigger functions
DROP FUNCTION IF EXISTS delete_inactive_accounts();
DROP FUNCTION IF EXISTS update_last_updated_column();
@@ -1,4 +1,4 @@
-- Trigger functions
-- Functions
CREATE OR REPLACE FUNCTION update_last_updated_column()
RETURNS TRIGGER AS $$
@@ -8,6 +8,13 @@ BEGIN
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION delete_inactive_accounts() RETURNS void AS $$
BEGIN
DELETE FROM account
WHERE last_updated < NOW() - INTERVAL '2 months';
END;
$$ LANGUAGE plpgsql;
-- Tables
CREATE TABLE "user" (
@@ -20,7 +27,7 @@ CREATE TABLE "link_request" (
user_id TEXT UNIQUE NOT NULL,
expires TIMESTAMP NOT NULL,
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES "user" (id)
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE
);
CREATE TABLE "account" (
@@ -32,7 +39,7 @@ CREATE TABLE "account" (
expires TIMESTAMP NOT NULL,
last_updated TIMESTAMP NOT NULL DEFAULT NOW(),
CONSTRAINT fk_account_user_id FOREIGN KEY (user_id) REFERENCES "user" (id)
CONSTRAINT fk_account_user_id FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE
);
-- Triggers
+3 -3
View File
@@ -61,16 +61,16 @@ impl Database {
Ok(result)
}
pub async fn delete_user(&self, user_id: impl AsRef<str>) -> Result<()> {
pub async fn delete_user(&self, user_id: impl AsRef<str>) -> Result<usize> {
use schema::user::dsl::*;
let mut connection = self.0.get().await?;
diesel::delete(user)
let affected = diesel::delete(user)
.filter(id.eq(user_id.as_ref()))
.execute(&mut connection)
.await?;
Ok(())
Ok(affected)
}
pub async fn get_or_create_user(&self, user_id: impl AsRef<str>) -> Result<User> {