summaryrefslogtreecommitdiff
path: root/migrations/20241026174345_init.sql
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-23 14:47:14 +0200
committerKyren223 <Kyren223@proton.me>2024-11-23 14:47:14 +0200
commit02e7420fe029588685c4dc35e44a1d16d590f387 (patch)
tree46c6f3dcede54bf418c2ab680dc929909f518280 /migrations/20241026174345_init.sql
parente35d70b91dcf3c27d0ea628d2b02741e8868f27c (diff)
More schemas changes, including indexes
Diffstat (limited to 'migrations/20241026174345_init.sql')
-rw-r--r--migrations/20241026174345_init.sql25
1 files changed, 20 insertions, 5 deletions
diff --git a/migrations/20241026174345_init.sql b/migrations/20241026174345_init.sql
index 1494e50..4d55e0d 100644
--- a/migrations/20241026174345_init.sql
+++ b/migrations/20241026174345_init.sql
@@ -3,7 +3,7 @@ CREATE TABLE messages (
id INTEGER PRIMARY KEY,
sender_id INT NOT NULL REFERENCES users (id),
content TEXT NOT NULL,
- edited BOOLEAN NOT NULL CHECK (edited IN (0, 1)),
+ edited BOOLEAN NOT NULL CHECK (edited IN (0, 1)) DEFAULT 0,
frequency_id INT REFERENCES frequencies (id) ON DELETE CASCADE,
receiver_id INT REFERENCES users (id),
@@ -19,7 +19,8 @@ CREATE TABLE users (
name TEXT NOT NULL,
public_key BLOB NOT NULL UNIQUE,
description TEXT,
- is_public_dm BOOLEAN NOT NULL CHECK (is_public_dm IN (0, 1))
+ is_public_dm BOOLEAN NOT NULL CHECK (is_public_dm IN (0, 1)) DEFAULT 1,
+ is_deleted BOOLEAN NOT NULL CHECK (is_deleted IN (0, 1)) DEFAULT 0
);
CREATE TABLE networks (
@@ -39,21 +40,23 @@ CREATE TABLE frequencies (
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
+ position INT NOT NULL -- TODO: make this auto inc
);
CREATE TABLE users_networks (
user_id INT NOT NULL REFERENCES users (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)),
+ is_admin BOOLEAN NOT NULL CHECK (is_admin IN (0, 1)) DEFAULT 0,
+ is_muted BOOLEAN NOT NULL CHECK (is_muted IN (0, 1)) DEFAULT 0,
PRIMARY KEY (user_id, network_id)
+ -- TODO: In discord, if u get "kicked" then join does your "joined_at" show the oldest or latest?
);
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,
+ trusted_public_key BLOB NOT NULL,
PRIMARY KEY (truster_user_id, trusted_user_id)
);
@@ -71,6 +74,12 @@ CREATE TABLE network_banned_users (
PRIMARY KEY (network_id, banned_user_id)
);
+CREATE INDEX idx_is_deleted_false ON users (is_deleted) WHERE is_deleted = 0;
+CREATE INDEX idx_network_name ON networks (name) WHERE is_public = 1;
+CREATE INDEX idx_frequency_network ON frequencies (network_id);
+CREATE INDEX idx_blocked_by_user ON user_blocked_users (blocker_user_id);
+CREATE INDEX idx_banned_by_network ON network_banned_users (network_id);
+
-- +goose Down
DROP TABLE messages;
DROP TABLE users;
@@ -80,3 +89,9 @@ DROP TABLE users_networks;
DROP TABLE user_trusted_users;
DROP TABLE user_blocked_users;
DROP TABLE network_banned_users;
+
+DROP INDEX idx_is_deleted_false;
+DROP INDEX idx_network_name;
+DROP INDEX idx_frequency_network;
+DROP INDEX idx_blocked_by_user;
+DROP INDEX idx_banned_by_network;