24 lines
960 B
SQL
24 lines
960 B
SQL
-- Migration to convert messages table to use UUIDs for ID, RoomID, ParentID
|
|
-- We will recreate the table to ensure clean state
|
|
|
|
DROP TABLE IF EXISTS messages;
|
|
|
|
CREATE TABLE messages (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE,
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
content TEXT NOT NULL,
|
|
type VARCHAR(50) NOT NULL DEFAULT 'text',
|
|
parent_id UUID REFERENCES messages(id) ON DELETE SET NULL,
|
|
is_edited BOOLEAN DEFAULT false,
|
|
is_deleted BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX idx_messages_room_id_created_at ON messages(room_id, created_at DESC);
|
|
CREATE INDEX idx_messages_sender_id ON messages(user_id);
|
|
CREATE INDEX idx_messages_parent_id ON messages(parent_id);
|
|
CREATE INDEX idx_messages_deleted_at ON messages(deleted_at);
|
|
|