summaryrefslogtreecommitdiff
path: root/migrations
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-10-27 17:04:08 +0200
committerKyren223 <ulmliad223@gmail.com>2024-10-27 17:04:08 +0200
commit31e3778061a20e0787c076d9353e82b2e223841e (patch)
treead95dad6c9d1d7df57314dd01787be4f23dc7549 /migrations
parent9a1030a5799b4b5e4456152993732c3bff375888 (diff)
feat: add setup for SQL
Diffstat (limited to 'migrations')
-rw-r--r--migrations/20241026174345_init.sql45
1 files changed, 45 insertions, 0 deletions
diff --git a/migrations/20241026174345_init.sql b/migrations/20241026174345_init.sql
new file mode 100644
index 0000000..ad1f65f
--- /dev/null
+++ b/migrations/20241026174345_init.sql
@@ -0,0 +1,45 @@
+-- +goose Up
+CREATE TABLE messages (
+ id INTEGER PRIMARY KEY,
+ sender_id INT NOT NULL REFERENCES users (id),
+ content TEXT NOT NULL,
+
+ frequency_id INT REFERENCES frequencies (id),
+ receiver_id INT REFERENCES users (id),
+
+ CHECK (
+ (frequency_id IS NOT NULL AND receiver_id IS NULL) OR
+ (frequency_id IS NULL AND receiver_id IS NOT NULL)
+ )
+);
+
+CREATE TABLE users (
+ id INTEGER PRIMARY KEY,
+ name TEXT NOT NULL,
+ public_key BLOB NOT NULL
+);
+
+CREATE TABLE networks (
+ id INTEGER PRIMARY KEY,
+ name TEXT NOT NULL,
+ owner_id INT NOT NULL REFERENCES users (id)
+);
+
+CREATE TABLE frequencies (
+ id INTEGER PRIMARY KEY,
+ network_id INT NOT NULL REFERENCES networks (id),
+ name TEXT NOT NULL
+);
+
+CREATE TABLE users_networks (
+ user_id INT NOT NULL REFERENCES users (id),
+ network_id INT NOT NULL REFERENCES networks (id),
+ PRIMARY KEY (user_id, network_id)
+);
+
+-- +goose Down
+DROP TABLE messages;
+DROP TABLE users;
+DROP TABLE networks;
+DROP TABLE frequencies;
+DROP TABLE users_networks;