Made even more changes the UI and added new Routes for searching a user, requesting consent for messaging and others. Now just need to make the SSE work.
27 lines
1 KiB
SQL
27 lines
1 KiB
SQL
-- Base Tables
|
|
CREATE TABLE users (
|
|
uuid UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
suuid CHAR(8) UNIQUE NOT NULL,
|
|
username TEXT UNIQUE NOT NULL CHECK (length(username) >= 3 AND username ~ '^[a-zA-Z0-9_-]+$'),
|
|
password TEXT NOT NULL CHECK (length(password) >= 8),
|
|
indexable BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE message_threads (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE thread_participants (
|
|
thread_id UUID REFERENCES message_threads(id) ON DELETE CASCADE,
|
|
user_uuid UUID REFERENCES users(uuid) ON DELETE CASCADE,
|
|
PRIMARY KEY (thread_id, user_uuid)
|
|
);
|
|
|
|
CREATE TABLE messages (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
thread_id UUID REFERENCES message_threads(id) ON DELETE CASCADE,
|
|
content TEXT NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()) NOT NULL
|
|
);
|