veza/veza-backend-api/migrations/041_create_rooms.sql
2025-12-03 20:29:37 +01:00

30 lines
1.3 KiB
SQL

-- Migration: Create rooms table for chat
-- Description: Chat rooms for real-time messaging
CREATE TABLE IF NOT EXISTS rooms (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
room_type VARCHAR(50) NOT NULL DEFAULT 'public', -- 'public', 'private', 'direct'
creator_id BIGINT NOT NULL,
is_active BOOLEAN DEFAULT true,
max_members INTEGER DEFAULT 100,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP WITH TIME ZONE,
CONSTRAINT fk_rooms_creator_id FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_rooms_creator_id ON rooms(creator_id);
CREATE INDEX IF NOT EXISTS idx_rooms_room_type ON rooms(room_type);
CREATE INDEX IF NOT EXISTS idx_rooms_is_active ON rooms(is_active) WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_rooms_deleted_at ON rooms(deleted_at);
CREATE INDEX IF NOT EXISTS idx_rooms_created_at ON rooms(created_at DESC);
-- Comments
COMMENT ON TABLE rooms IS 'Chat rooms for real-time messaging';
COMMENT ON COLUMN rooms.room_type IS 'Type of room: public, private, or direct';
COMMENT ON COLUMN rooms.max_members IS 'Maximum number of members allowed in the room';