-- Fix 1: unique general chat room per hotel (prevent duplicates on every open) -- First deduplicate: keep the oldest general room per hotel, delete the rest DELETE FROM chat_rooms WHERE type = 'general' AND id NOT IN ( SELECT DISTINCT ON (hotel_id) id FROM chat_rooms WHERE type = 'general' ORDER BY hotel_id, created_at ASC ); -- Now add the unique constraint CREATE UNIQUE INDEX IF NOT EXISTS uq_chat_rooms_general_per_hotel ON chat_rooms (hotel_id) WHERE type = 'general'; -- Fix 2: replace 'standard' tier with 'bronze' (the UI uses bronze/silver/gold/platinum) -- Drop the old check constraint that only allows 'standard' instead of 'bronze' ALTER TABLE guests DROP CONSTRAINT IF EXISTS guests_loyalty_tier_check; -- Add the correct constraint ALTER TABLE guests ADD CONSTRAINT guests_loyalty_tier_check CHECK (loyalty_tier IN ('bronze', 'silver', 'gold', 'platinum')); -- Migrate existing 'standard' rows to 'bronze' UPDATE guests SET loyalty_tier = 'bronze' WHERE loyalty_tier NOT IN ('bronze', 'silver', 'gold', 'platinum');