Files
hotelsync/backend/migrations/040_fixes.sql
HotelSync be58b16365 fix: migration 040 — run UPDATE before ADD CONSTRAINT (correct order)
ALTER TABLE ADD CONSTRAINT validates existing rows immediately, so the
UPDATE must run first to migrate 'standard' → 'bronze' before the new
constraint is applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 11:12:47 +03:00

30 lines
1.0 KiB
SQL

-- 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 first
ALTER TABLE guests DROP CONSTRAINT IF EXISTS guests_loyalty_tier_check;
-- Migrate existing 'standard' rows to 'bronze' (must happen BEFORE adding the new constraint)
UPDATE guests
SET loyalty_tier = 'bronze'
WHERE loyalty_tier NOT IN ('bronze', 'silver', 'gold', 'platinum');
-- Now add the correct constraint
ALTER TABLE guests
ADD CONSTRAINT guests_loyalty_tier_check
CHECK (loyalty_tier IN ('bronze', 'silver', 'gold', 'platinum'));