-- Migration: meal_menu_branch
-- Her şubenin bağımsız yemek menüsü olabilmesi için branch_id ekleniyor.
-- Mevcut kayıtlar NULL branch_id ile korunur (tüm kurum menüsü olarak).

-- 1. branch_id sütununu ekle (nullable)
ALTER TABLE "meal_menus" ADD COLUMN IF NOT EXISTS "branch_id" TEXT;

-- 2. Eski unique constraint'i kaldır
ALTER TABLE "meal_menus" DROP CONSTRAINT IF EXISTS "meal_menus_tenant_id_menu_date_key";

-- 3. Yeni unique constraint: tenant + branch + date
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM pg_constraint
    WHERE conname = 'meal_menus_tenant_id_branch_id_menu_date_key'
  ) THEN
    ALTER TABLE "meal_menus"
      ADD CONSTRAINT "meal_menus_tenant_id_branch_id_menu_date_key"
      UNIQUE ("tenant_id", "branch_id", "menu_date");
  END IF;
END
$$;

-- 4. Eski index'i kaldır ve yenisini oluştur
DROP INDEX IF EXISTS "meal_menus_tenant_id_menu_date_idx";

CREATE INDEX IF NOT EXISTS "meal_menus_tenant_id_branch_id_menu_date_idx"
  ON "meal_menus" ("tenant_id", "branch_id", "menu_date");

-- 5. Foreign key: branch_id → branches.id (ON DELETE SET NULL)
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM pg_constraint
    WHERE conname = 'meal_menus_branch_id_fkey'
  ) THEN
    ALTER TABLE "meal_menus"
      ADD CONSTRAINT "meal_menus_branch_id_fkey"
      FOREIGN KEY ("branch_id") REFERENCES "branches" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
  END IF;
END
$$;
