From bc045e9b72fcbd86b52125edb7f46b5b140fc18d Mon Sep 17 00:00:00 2001 From: mykola2312 Date: Sun, 3 Mar 2024 18:05:16 +0200 Subject: [PATCH] add request_chat table for requesting access to download for chats --- migrations/1_init.sql | 21 +++++++++++++++++++++ src/db.rs | 10 ++++++++++ 2 files changed, 31 insertions(+) diff --git a/migrations/1_init.sql b/migrations/1_init.sql index 334275d..9debe35 100644 --- a/migrations/1_init.sql +++ b/migrations/1_init.sql @@ -48,4 +48,25 @@ AFTER UPDATE OF is_approved ON "request" WHEN new.is_approved = 1 BEGIN UPDATE user SET can_download = 1 WHERE user.id = new.requested_by; +END; + +CREATE TABLE "request_chat" +( + id INTEGER PRIMARY KEY AUTOINCREMENT, + requested_by INTEGER NOT NULL UNIQUE, + requested_for INTEGER NOT NULL UNIQUE, + approved_by INTEGER UNIQUE, + message TEXT, + is_approved INTEGER NOT NULL, + + FOREIGN KEY(requested_by) REFERENCES "user"(id), + FOREIGN KEY(requested_for) REFERENCES "chat"(id), + FOREIGN KEY(approved_by) REFERENCES "user"(id) +); + +CREATE TRIGGER "approve_chat" +AFTER UPDATE OF is_approved ON "request_chat" +WHEN new.is_approved = 1 +BEGIN + UPDATE chat SET can_download = 1 WHERE chat.id = new.requested_for; END; \ No newline at end of file diff --git a/src/db.rs b/src/db.rs index cd369ec..873cebc 100644 --- a/src/db.rs +++ b/src/db.rs @@ -73,6 +73,16 @@ pub struct Request { pub is_approved: i64, } +#[derive(sqlx::FromRow)] +pub struct RequestChat { + pub id: i64, + pub requested_by: i64, + pub requested_for: i64, + pub approved_by: Option, + pub message: Option, + pub is_approved: i64, +} + pub async fn db_init() -> SqlitePool { let db_url = make_database_url(); if !Sqlite::database_exists(&db_url).await.unwrap_or(false) {