-- Migration 088 — Room Service: orders & order items

CREATE TABLE room_service_orders (
  id             UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  hotel_id       UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
  room_number    TEXT NOT NULL,
  guest_name     TEXT NOT NULL DEFAULT '',
  order_type     TEXT NOT NULL DEFAULT 'room' CHECK (order_type IN ('room', 'restaurant')),
  scheduled_time TEXT,
  status         TEXT NOT NULL DEFAULT 'new'
                   CHECK (status IN ('new','preparing','ready','delivered','cancelled')),
  payment_method TEXT,      -- name from hotel_payment_methods (snapshot)
  subtotal       NUMERIC(10,2) NOT NULL DEFAULT 0,
  service_charge NUMERIC(10,2) NOT NULL DEFAULT 0,
  total          NUMERIC(10,2) NOT NULL DEFAULT 0,
  notes          TEXT,
  created_at     TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at     TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE room_service_order_items (
  id           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  order_id     UUID NOT NULL REFERENCES room_service_orders(id) ON DELETE CASCADE,
  menu_item_id UUID REFERENCES room_service_menu_items(id) ON DELETE SET NULL,
  name         TEXT NOT NULL,
  emoji        TEXT NOT NULL DEFAULT '🍽️',
  price        NUMERIC(10,2) NOT NULL,
  quantity     INTEGER NOT NULL DEFAULT 1
);

CREATE INDEX ON room_service_orders(hotel_id, status);
CREATE INDEX ON room_service_orders(hotel_id, created_at DESC);
