Added all SQL scripts by using a python script to fetch them. Also added a "About" page and a skeleton to the chat page. Fixed the register function that was not setting the public_key on the database
1 line
No EOL
1.2 KiB
SQL
1 line
No EOL
1.2 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
|
|
); |