You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
synctv/migrations/20260426045_create_chat_mes...

24 lines
974 B
MySQL

CREATE TABLE IF NOT EXISTS chat_message_pins (
room_id BIGINT NOT NULL,
message_id BIGINT NOT NULL,
message_created_at TIMESTAMPTZ NOT NULL,
pinned_by BIGINT,
note TEXT,
pinned_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (room_id, message_id, message_created_at),
FOREIGN KEY (room_id) REFERENCES rooms(id) ON DELETE CASCADE,
FOREIGN KEY (pinned_by) REFERENCES users(id) ON DELETE SET NULL,
FOREIGN KEY (room_id, message_id, message_created_at)
REFERENCES chat_messages(room_id, id, created_at) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_chat_message_pins_room_pinned
ON chat_message_pins(room_id, pinned_at DESC, message_id DESC);
CREATE INDEX IF NOT EXISTS idx_chat_message_pins_message
ON chat_message_pins(message_id, message_created_at);
CREATE INDEX IF NOT EXISTS idx_chat_message_pins_pinned_by
ON chat_message_pins(pinned_by, pinned_at DESC)
WHERE pinned_by IS NOT NULL;