From e27b4257fe59f8a21fb1ea1f75c6c65a5ad5b913 Mon Sep 17 00:00:00 2001 From: eiiko6 Date: Thu, 18 Dec 2025 16:20:30 +0100 Subject: [PATCH] added room invites to DB, and minor frontend layout changes --- db/init.sql | 34 ++++++++++++++++++++++++---------- db/mock_data.sql | 3 +++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/db/init.sql b/db/init.sql index 3c47a56..2f6181d 100644 --- a/db/init.sql +++ b/db/init.sql @@ -7,16 +7,16 @@ CREATE TABLE IF NOT EXISTS user_ ( ); CREATE TABLE IF NOT EXISTS friendship_ ( - user_first INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, + user_first INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, user_second INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, - created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + created_at TIMESTAMP NOT NULL DEFAULT now(), PRIMARY KEY (user_first, user_second) ); CREATE TABLE IF NOT EXISTS friend_request_ ( - sender INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, + sender INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, receiver INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, - sent_at TIMESTAMPTZ NOT NULL DEFAULT now(), + sent_at TIMESTAMP NOT NULL DEFAULT now(), PRIMARY KEY (sender, receiver), CHECK (sender <> receiver) ); @@ -24,9 +24,9 @@ CREATE TABLE IF NOT EXISTS friend_request_ ( CREATE TABLE IF NOT EXISTS room_ ( id SERIAL PRIMARY KEY, uuid UUID UNIQUE, - owner INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, + owner INT NOT NULL REFERENCES user_(id), name TEXT NOT NULL, - global BOOLEAN DEFAULT false + global BOOLEAN NOT NULL DEFAULT false ); CREATE TABLE IF NOT EXISTS membership_ ( @@ -35,13 +35,22 @@ CREATE TABLE IF NOT EXISTS membership_ ( PRIMARY KEY (user_id, room) ); +CREATE TABLE IF NOT EXISTS room_invite_ ( + sender INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, + receiver INT NOT NULL REFERENCES user_(id) ON DELETE CASCADE, + room INT NOT NULL, + sent_at TIMESTAMP NOT NULL DEFAULT now(), + PRIMARY KEY (sender, receiver), + CHECK (sender <> receiver) +); + CREATE TABLE IF NOT EXISTS message_ ( id BIGSERIAL PRIMARY KEY, sender INT REFERENCES user_(id) NOT NULL, room INT REFERENCES room_(id) NOT NULL, message_type VARCHAR(32) NOT NULL, content TEXT NOT NULL, - sent_at TIMESTAMP + sent_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE ws_token_ ( @@ -50,8 +59,8 @@ CREATE TABLE ws_token_ ( expires_at TIMESTAMPTZ NOT NULL ); --- Message timestamp creation -CREATE OR REPLACE FUNCTION create_message_timestamp() +-- Timestamp creation +CREATE OR REPLACE FUNCTION create_notification_timestamp() RETURNS trigger AS $$ BEGIN @@ -63,4 +72,9 @@ $$ LANGUAGE plpgsql; CREATE OR REPLACE TRIGGER insert_message BEFORE INSERT ON message_ FOR EACH ROW -EXECUTE FUNCTION create_message_timestamp(); +EXECUTE FUNCTION create_notification_timestamp(); + +CREATE OR REPLACE TRIGGER insert_room_invite +BEFORE INSERT ON room_invite_ +FOR EACH ROW +EXECUTE FUNCTION create_notification_timestamp(); diff --git a/db/mock_data.sql b/db/mock_data.sql index d9ae68e..927aa33 100644 --- a/db/mock_data.sql +++ b/db/mock_data.sql @@ -32,3 +32,6 @@ INSERT INTO friend_request_ (sender, receiver) VALUES INSERT INTO ws_token_ (token, room_id, expires_at) VALUES ('random_token_1', 1, '2025-12-31T23:59:59Z'), ('random_token_2', 2, '2025-12-31T23:59:59Z'); + +INSERT INTO room_invite_ (sender, receiver, room) VALUES +(2, 1, 2);