mirror of
https://github.com/Kyren223/eko.git
synced 2026-07-12 07:19:29 +00:00
More schema changes
This commit is contained in:
@@ -5,7 +5,7 @@ CREATE TABLE messages (
|
||||
content TEXT NOT NULL,
|
||||
edited BOOLEAN NOT NULL CHECK (edited IN (0, 1)),
|
||||
|
||||
frequency_id INT REFERENCES frequencies (id),
|
||||
frequency_id INT REFERENCES frequencies (id) ON DELETE CASCADE,
|
||||
receiver_id INT REFERENCES users (id),
|
||||
|
||||
CHECK (
|
||||
@@ -17,8 +17,9 @@ CREATE TABLE messages (
|
||||
CREATE TABLE users (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
public_key BLOB NOT NULL,
|
||||
bio TEXT
|
||||
public_key BLOB NOT NULL UNIQUE,
|
||||
description TEXT,
|
||||
is_public_dm BOOLEAN NOT NULL CHECK (is_public_dm IN (0, 1))
|
||||
);
|
||||
|
||||
CREATE TABLE networks (
|
||||
@@ -26,29 +27,56 @@ CREATE TABLE networks (
|
||||
owner_id INT NOT NULL REFERENCES users (id),
|
||||
name TEXT NOT NULL,
|
||||
icon TEXT NOT NULL,
|
||||
bg TEXT NULL,
|
||||
fg TEXT NOT NULL
|
||||
bg_hex_color TEXT,
|
||||
fg_hex_color TEXT NOT NULL,
|
||||
is_public BOOLEAN NOT NULL CHECK (is_public IN (0, 1))
|
||||
);
|
||||
|
||||
CREATE TABLE frequencies (
|
||||
id INTEGER PRIMARY KEY,
|
||||
network_id INT NOT NULL REFERENCES networks (id),
|
||||
network_id INT NOT NULL REFERENCES networks (id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
color TEXT,
|
||||
hex_color TEXT,
|
||||
perms INT NOT NULL CHECK (perms IN (0, 1, 2)),
|
||||
-- 0 rw admin | 1 r all w admin | 2 rw all
|
||||
position INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE users_networks (
|
||||
user_id INT NOT NULL REFERENCES users (id),
|
||||
network_id INT NOT NULL REFERENCES networks (id),
|
||||
network_id INT NOT NULL REFERENCES networks (id) ON DELETE CASCADE,
|
||||
joined_at TEXT NOT NULL DEFAULT current_timestamp,
|
||||
is_admin BOOLEAN NOT NULL CHECK (is_admin IN (0, 1)),
|
||||
PRIMARY KEY (user_id, network_id)
|
||||
);
|
||||
|
||||
CREATE TABLE user_trusted_users (
|
||||
truster_user_id INT NOT NULL REFERENCES users (id),
|
||||
trusted_user_id INT NOT NULL REFERENCES users (id),
|
||||
trusted_public_key BLOB NOT NULL UNIQUE,
|
||||
PRIMARY KEY (truster_user_id, trusted_user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE user_blocked_users (
|
||||
blocker_user_id INT NOT NULL REFERENCES users (id),
|
||||
blocked_user_id INT NOT NULL REFERENCES users (id),
|
||||
PRIMARY KEY (blocker_user_id, blocked_user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE network_banned_users (
|
||||
network_id INT NOT NULL REFERENCES networks (id) ON DELETE CASCADE,
|
||||
banned_user_id INT NOT NULL REFERENCES users (id),
|
||||
banned_at TEXT NOT NULL DEFAULT current_timestamp,
|
||||
reason TEXT,
|
||||
PRIMARY KEY (network_id, banned_user_id)
|
||||
);
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE messages;
|
||||
DROP TABLE users;
|
||||
DROP TABLE networks;
|
||||
DROP TABLE frequencies;
|
||||
DROP TABLE users_networks;
|
||||
DROP TABLE user_trusted_users;
|
||||
DROP TABLE user_blocked_users;
|
||||
DROP TABLE network_banned_users;
|
||||
|
||||
Reference in New Issue
Block a user