mirror of
https://github.com/Kyren223/eko.git
synced 2026-07-13 07:30:26 +00:00
46 lines
1005 B
SQL
46 lines
1005 B
SQL
-- +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;
|