Update init.sql
This commit is contained in:
+24
-32
@@ -1,5 +1,5 @@
|
|||||||
CREATE TABLE IF NOT EXISTS users(
|
CREATE TABLE IF NOT EXISTS users(
|
||||||
user_id VARCHAR(70) UNIQUE,
|
user_id VARCHAR(70) UNIQUE,
|
||||||
internal_uuid UUID PRIMARY KEY,
|
internal_uuid UUID PRIMARY KEY,
|
||||||
username VARCHAR(50) UNIQUE NOT NULL,
|
username VARCHAR(50) UNIQUE NOT NULL,
|
||||||
password TEXT NOT NULL,
|
password TEXT NOT NULL,
|
||||||
@@ -12,7 +12,7 @@ CREATE TABLE IF NOT EXISTS users(
|
|||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS contacts (
|
CREATE TABLE IF NOT EXISTS contacts (
|
||||||
user_id UUID REFERENCES users(internal_uuid) ON DELETE CASCADE,
|
user_id UUID REFERENCES users(internal_uuid) ON DELETE CASCADE,
|
||||||
contact_id UUID REFERENCES users(internal_uuid) ON DELETE CASCADE,
|
contact_id UUID REFERENCES users(internal_uuid) ON DELETE CASCADE,
|
||||||
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
is_blocked BOOLEAN DEFAULT FALSE,
|
is_blocked BOOLEAN DEFAULT FALSE,
|
||||||
@@ -21,74 +21,66 @@ CREATE TABLE IF NOT EXISTS contacts (
|
|||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS messages (
|
CREATE TABLE IF NOT EXISTS messages (
|
||||||
message_id UUID PRIMARY KEY,
|
message_id UUID PRIMARY KEY,
|
||||||
sender_id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
sender_id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
||||||
receiver_type VARCHAR(20) NOT NULL CHECK (receiver_type IN ('private','group','channel')),
|
receiver_type VARCHAR(20) NOT NULL CHECK (receiver_type IN ('private','group','channel')),
|
||||||
receiver_id UUID NOT NULL,
|
receiver_id UUID NOT NULL ,
|
||||||
content TEXT,
|
content TEXT,
|
||||||
message_type VARCHAR(20) DEFAULT 'TEXT' CHECK (message_type IN ('TEXT','IMAGE','FILE','VIDEO','AUDIO','STICKER','GIF')),
|
message_type VARCHAR(20) DEFAULT 'TEXT' CHECK (message_type IN ('TEXT','IMAGE','FILE','VIDEO','AUDIO','STICKER','GIF')),
|
||||||
file_url TEXT, --(Bouns)
|
file_url TEXT, --(Bouns)
|
||||||
send_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
send_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
status VARCHAR(20), -- SEND,DELIVERED,READ
|
status VARCHAR(20), -- SEND,DELIVERED,READ
|
||||||
reply_to_id UUID REFERENCES messages(message_id) ON DELETE SET NULL, --(Bouns)
|
reply_to_id UUID REFERENCES messages(message_id) ON DELETE SET NULL, --(Bouns)
|
||||||
is_edited BOOLEAN, --(Bonus)
|
is_edited BOOLEAN DEFAULT FALSE, --(Bonus)
|
||||||
original_message_id UUID REFERENCES message_id, --(Bonus)
|
original_message_id UUID REFERENCES messages(message_id)
|
||||||
forwarded_by UUID REFERENCES users(internal_uuid), --(Bouns)
|
ON DELETE SET NULL, --(Bonus)
|
||||||
forwarded_from UUID REFERENCES users(internal_uuid) --(Bouns)
|
forwarded_by UUID REFERENCES users(internal_uuid) ON DELETE SET NULL, --(Bouns)
|
||||||
|
forwarded_from UUID REFERENCES users(internal_uuid) ON DELETE SET NULL --(Bouns)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS private_chat (
|
CREATE TABLE IF NOT EXISTS private_chat (
|
||||||
chat_id UUID PRIMARY KEY,
|
chat_id UUID PRIMARY KEY,
|
||||||
user1-id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
user1_id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
||||||
user2_id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
user2_id UUID REFERENCES users(internal_uuid) ON DELETE SET NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
CONSTRAINT unique_users UNIQUE (user1_id, user2_id)
|
CONSTRAINT unique_users UNIQUE (user1_id, user2_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS groups (
|
CREATE TABLE IF NOT EXISTS groups (
|
||||||
group_id VARCHAR(70) UNIQUE,
|
internal_uuid UUID PRIMARY KEY,
|
||||||
internal_uuid UUID,
|
group_id VARCHAR(70) UNIQUE,
|
||||||
group_name VARCHAR(100),
|
group_name VARCHAR(100),
|
||||||
creator_id UUID REFERENCES users(internal_uuid),
|
creator_id UUID REFERENCES users(internal_uuid),
|
||||||
image_url TEXT,
|
image_url TEXT,
|
||||||
description TEXT,
|
description TEXT
|
||||||
PRIMARY KEY (group_id, internal_uuid)
|
);
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS group_members (
|
CREATE TABLE IF NOT EXISTS group_members (
|
||||||
group_id UUID REFERENCES groups(group_id),
|
group_id UUID REFERENCES groups(internal_uuid) ON DELETE CASCADE,
|
||||||
user_id UUID REFERENCES users(internal_uuid),
|
user_id UUID REFERENCES users(internal_uuid),
|
||||||
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
role VARCHAR(20) DEFAULT 'member', -- member/admin/owner
|
role VARCHAR(20) DEFAULT 'member', -- member/admin/owner
|
||||||
PRIMARY KEY (group_id, user_id)
|
PRIMARY KEY (group_id, user_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS channels (
|
CREATE TABLE IF NOT EXISTS channels (
|
||||||
channel_id VARCHAR(70) UNIQUE,
|
channel_id VARCHAR(70) UNIQUE,
|
||||||
internal_uuid UUID,
|
internal_uuid UUID PRIMARY KEY,,
|
||||||
channel_name VARCHAR(100),
|
channel_name VARCHAR(100),
|
||||||
creator_id UUID REFERENCES users(internal_uuid),
|
creator_id UUID REFERENCES users(internal_uuid),
|
||||||
image_url TEXT,
|
image_url TEXT,
|
||||||
description TEXT,
|
description TEXT
|
||||||
PRIMARY KEY (channel_id, internal_uuid)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS channel_subscribers (
|
CREATE TABLE IF NOT EXISTS channel_subscribers (
|
||||||
channel_id UUID REFERENCES channels(channel_id),
|
channel_id UUID REFERENCES channels(internal_uuid) ON DELETE CASCADE,
|
||||||
user_id UUID REFERENCES users(internal_uuid),
|
user_id UUID REFERENCES users(internal_uuid),
|
||||||
subscribed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
subscribed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (channel_id, user_id)
|
PRIMARY KEY (channel_id, user_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
--(Bouns)
|
--(Bouns)
|
||||||
CREATE TABLE IF NOT EXISTS channel_admins (
|
CREATE TABLE IF NOT EXISTS channel_admins (
|
||||||
channel_id UUID REFERENCES channels(channel_id),
|
channel_id UUID REFERENCES channels(channel_id),
|
||||||
user_id UUID REFERENCES users(internal_uuid),
|
user_id UUID REFERENCES users(internal_uuid),
|
||||||
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
added_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
added_by UUID REFERENCES users(internal_uuid),
|
added_by UUID REFERENCES users(internal_uuid),
|
||||||
@@ -99,4 +91,4 @@ CREATE TABLE IF NOT EXISTS channel_admins (
|
|||||||
can_delete_members BOOLEAN DEFAULT FALSE,
|
can_delete_members BOOLEAN DEFAULT FALSE,
|
||||||
can_add_members BOOLEAN DEFAULT TRUE,
|
can_add_members BOOLEAN DEFAULT TRUE,
|
||||||
PRIMARY KEY (channel_id, user_id)
|
PRIMARY KEY (channel_id, user_id)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user