26 lines
1.3 KiB
SQL
26 lines
1.3 KiB
SQL
CREATE TABLE watch_together_suggestions (
|
|
id TEXT PRIMARY KEY,
|
|
room_id TEXT NOT NULL REFERENCES watch_together_rooms(id) ON DELETE CASCADE,
|
|
suggester_user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
suggester_profile_id TEXT NOT NULL,
|
|
content_id TEXT NOT NULL,
|
|
content_type TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
subtitle TEXT NOT NULL DEFAULT '',
|
|
poster_url TEXT NOT NULL DEFAULT '',
|
|
note TEXT NOT NULL DEFAULT '',
|
|
vote_count INTEGER NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT wt_suggestion_content_type_check CHECK (content_type IN ('movie', 'episode'))
|
|
);
|
|
|
|
CREATE TABLE watch_together_votes (
|
|
suggestion_id TEXT NOT NULL REFERENCES watch_together_suggestions(id) ON DELETE CASCADE,
|
|
voter_profile_id TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (suggestion_id, voter_profile_id)
|
|
);
|
|
|
|
CREATE INDEX idx_wt_suggestions_room ON watch_together_suggestions(room_id, vote_count DESC, created_at);
|
|
CREATE INDEX idx_wt_votes_suggestion ON watch_together_votes(suggestion_id);
|