Files
hotelsync/backend/migrations/003_fix_constraints.sql
HotelSync 728b20417a Connect frontend to real API — rooms, bookings, housekeeping, calendar
- src/lib/api.ts: central API client with JWT auto-refresh, snake_case→camelCase transform
- src/contexts/AuthContext.tsx: real login via POST /api/auth/login
- src/pages/RoomsPage.tsx: load rooms from API, create/update via API
- src/pages/BookingsPage.tsx: load bookings + rooms from API
- src/pages/HousekeepingPage.tsx: load today's tasks from API, update status via API
- src/pages/CalendarPage.tsx: load rooms + bookings from API
- src/types/index.ts: fix HousekeepingTask.priority to match DB (medium/urgent)
- backend/src/routes/rooms.ts: update to use new column names (max_guests, base_rate) + all new fields
- backend/src/routes/bookings.ts: update price_per_night→base_rate, add paid_amount to PATCH
- backend/migrations/003_fix_constraints.sql: fix rooms.status values, add paid_amount, inquiry status, other source
- public/robots.txt + index.html: noindex for SPA inner pages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 13:49:30 +03:00

31 lines
1.8 KiB
SQL

-- HotelSync Database Schema
-- Migration 003 — Fix constraints and add missing columns
-- ── Rooms: исправить статус (был HK-статус, должен быть статус доступности) ──
ALTER TABLE rooms DROP CONSTRAINT IF EXISTS rooms_status_check;
UPDATE rooms SET status = CASE
WHEN status = 'clean' THEN 'available'
WHEN status = 'dirty' THEN 'available'
WHEN status = 'out_of_order' THEN 'blocked'
ELSE status -- 'maintenance' → 'maintenance'
END WHERE status IN ('clean', 'dirty', 'out_of_order');
ALTER TABLE rooms ADD CONSTRAINT rooms_status_check
CHECK (status IN ('available', 'occupied', 'maintenance', 'blocked'));
ALTER TABLE rooms ALTER COLUMN status SET DEFAULT 'available';
-- ── Bookings: добавить 'inquiry' в статусы ──────────────────────────────────
ALTER TABLE bookings DROP CONSTRAINT IF EXISTS bookings_status_check;
ALTER TABLE bookings ADD CONSTRAINT bookings_status_check
CHECK (status IN ('inquiry', 'confirmed', 'checked_in', 'checked_out', 'cancelled', 'no_show'));
-- ── Bookings: добавить 'other' в источники ─────────────────────────────────
ALTER TABLE bookings DROP CONSTRAINT IF EXISTS bookings_source_check;
ALTER TABLE bookings ADD CONSTRAINT bookings_source_check
CHECK (source IN ('direct', 'booking_com', 'airbnb', 'expedia', 'vrbo', 'other'));
-- ── Bookings: добавить paid_amount ─────────────────────────────────────────
ALTER TABLE bookings ADD COLUMN IF NOT EXISTS paid_amount DECIMAL(10,2) NOT NULL DEFAULT 0;