16 lines
584 B
SQL
16 lines
584 B
SQL
CREATE TABLE IF NOT EXISTS direct_messages (
|
|
id SERIAL PRIMARY KEY,
|
|
sender_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
recipient_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
body TEXT NOT NULL,
|
|
read_at TIMESTAMP,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CHECK (sender_id <> recipient_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_direct_messages_conversation
|
|
ON direct_messages (sender_id, recipient_id, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_direct_messages_unread
|
|
ON direct_messages (recipient_id, read_at);
|