add request_chat table for requesting access to download for chats

This commit is contained in:
mykola2312 2024-03-03 18:05:16 +02:00
parent 1213e35820
commit bc045e9b72
2 changed files with 31 additions and 0 deletions

View file

@ -48,4 +48,25 @@ AFTER UPDATE OF is_approved ON "request"
WHEN new.is_approved = 1 WHEN new.is_approved = 1
BEGIN BEGIN
UPDATE user SET can_download = 1 WHERE user.id = new.requested_by; 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; END;

View file

@ -73,6 +73,16 @@ pub struct Request {
pub is_approved: i64, 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<i64>,
pub message: Option<String>,
pub is_approved: i64,
}
pub async fn db_init() -> SqlitePool { pub async fn db_init() -> SqlitePool {
let db_url = make_database_url(); let db_url = make_database_url();
if !Sqlite::database_exists(&db_url).await.unwrap_or(false) { if !Sqlite::database_exists(&db_url).await.unwrap_or(false) {