diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-10-27 17:04:08 +0200 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-10-27 17:04:08 +0200 |
| commit | 31e3778061a20e0787c076d9353e82b2e223841e (patch) | |
| tree | ad95dad6c9d1d7df57314dd01787be4f23dc7549 /migrations | |
| parent | 9a1030a5799b4b5e4456152993732c3bff375888 (diff) | |
feat: add setup for SQL
Diffstat (limited to 'migrations')
| -rw-r--r-- | migrations/20241026174345_init.sql | 45 |
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; |
