-- 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);