Files
hotelsync/backend/migrations/052_ttlock_nullable_room.sql
HotelSync 1ec3664886 feat: TTLockPage — import locks from TTHotel XLS file
- Parse .xls/.xlsx via SheetJS (xlsx package)
- Auto-match Door Name → room number; unmatched rows kept with empty room
- Preview table: green=matched, amber=unmatched, grey=already mapped
- Per-row room dropdown for manual correction before import
- room_id nullable in room_lock_mappings (migration 052)
- Conflict key changed from (hotel_id, room_id) to (hotel_id, lock_mac)
- LEFT JOIN in GET room-locks to show unmatched locks
- DELETE by UUID or MAC depending on whether room is assigned

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:08:24 +03:00

19 lines
926 B
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- TTLock: room_id в room_lock_mappings становится необязательным
-- Нужно для импорта замков из TTHotel без привязки к номеру в системе
ALTER TABLE room_lock_mappings
ALTER COLUMN room_id DROP NOT NULL;
-- Добавляем lock_name если не было
ALTER TABLE room_lock_mappings
ADD COLUMN IF NOT EXISTS lock_name TEXT;
-- Уникальность теперь по lock_mac (один MAC — одна запись)
-- Старый unique(hotel_id, room_id) оставляем (работает с NULL через NULLS NOT DISTINCT в PG15+
-- или просто убираем и заменяем на lock_mac)
ALTER TABLE room_lock_mappings
DROP CONSTRAINT IF EXISTS room_lock_mappings_hotel_id_room_id_key;
ALTER TABLE room_lock_mappings
ADD CONSTRAINT room_lock_mappings_hotel_id_lock_mac_key UNIQUE (hotel_id, lock_mac);