29 lines
1.4 KiB
SQL
29 lines
1.4 KiB
SQL
CREATE TABLE neuralnet_privacy (
|
|
username VARCHAR(100) PRIMARY KEY REFERENCES users(username) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
enabled BOOLEAN NOT NULL DEFAULT FALSE
|
|
);
|
|
|
|
CREATE TABLE neuralnet_connections (
|
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
requester VARCHAR(100) NOT NULL REFERENCES users(username) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
addressee VARCHAR(100) NOT NULL REFERENCES users(username) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
created_at TIMESTAMP NOT NULL,
|
|
responded_at TIMESTAMP,
|
|
CONSTRAINT uq_neuralnet_connection UNIQUE (requester, addressee),
|
|
CONSTRAINT chk_neuralnet_no_self CHECK (requester <> addressee)
|
|
);
|
|
CREATE INDEX idx_neuralnet_connection_addressee ON neuralnet_connections(addressee, status);
|
|
|
|
CREATE TABLE neuralnet_messages (
|
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
sender VARCHAR(100) NOT NULL REFERENCES users(username) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
recipient VARCHAR(100) NOT NULL REFERENCES users(username) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
body VARCHAR(2000) NOT NULL,
|
|
sent_at TIMESTAMP NOT NULL,
|
|
read_at TIMESTAMP,
|
|
reported BOOLEAN NOT NULL DEFAULT FALSE
|
|
);
|
|
CREATE INDEX idx_neuralnet_message_pair ON neuralnet_messages(sender, recipient, sent_at);
|
|
CREATE INDEX idx_neuralnet_message_unread ON neuralnet_messages(recipient, read_at);
|