Files
hotelsync/backend/migrations/010_booking_guests.sql
HotelSync 873a9a4fc4 Add multi-guest management: per-booking roster, docs, guest autocomplete
- Migration 010: booking_guests table (roster per booking with passport data)
- Backend: /bookings/:id/guests CRUD — auto-links/creates guest profiles by passport
- Backend: /hotel-settings GET/PATCH for key-value settings (require_guest_docs)
- BookingDetailPanel: Гости tab with multi-guest list, inline add/edit form,
  guest autocomplete (debounced search in guests table), child/main badges,
  passport fields for adults, scan stub, require-docs warning
- SettingsPage: toggle "Обязательное заполнение документов гостей"
- Pass slug prop through CalendarPage → BookingCalendar → BookingDetailPanel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 20:53:07 +03:00

29 lines
1.2 KiB
SQL

-- Migration 010 — booking_guests: per-booking guest roster with documents
CREATE TABLE IF NOT EXISTS booking_guests (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
booking_id UUID NOT NULL REFERENCES bookings(id) ON DELETE CASCADE,
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
guest_id UUID REFERENCES guests(id) ON DELETE SET NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
middle_name VARCHAR(100),
birth_date DATE,
is_child BOOLEAN NOT NULL DEFAULT false,
is_main BOOLEAN NOT NULL DEFAULT false,
passport_series VARCHAR(20),
passport_number VARCHAR(20),
passport_issued_by TEXT,
passport_issue_date DATE,
nationality VARCHAR(100),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_booking_guests_booking ON booking_guests(booking_id);
CREATE INDEX IF NOT EXISTS idx_booking_guests_guest ON booking_guests(guest_id);