-- M1 홀 배정·자동 견적 — hall_assignment 점유기간/상태 보강 (멱등)
-- 배경: 기존 hall_assignment(V2)는 (event_id, hall_id, is_primary)만 보유해
--       "같은 홀·기간 겹침" 충돌 검사가 불가하다. 점유기간·상태·감사 컬럼을 순증한다.
-- 규칙: V1~V24 불변. ADD COLUMN IF NOT EXISTS + 백필 UPDATE + IF NOT EXISTS 인덱스로 재실행 안전.

ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS occupy_start date;
ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS occupy_end   date;
ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS status       varchar(20) NOT NULL DEFAULT 'assigned';
ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS note         varchar(500);
ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS created_at   timestamptz NOT NULL DEFAULT now();
ALTER TABLE hall_assignment ADD COLUMN IF NOT EXISTS updated_at   timestamptz NOT NULL DEFAULT now();

-- 점유기간 미설정(기존 시드) 행은 행사 개최 기간으로 백필.
-- 점유기간은 반입~반출을 포함하나, 실측 반입/반출 일자가 없으므로 개최일 기준으로 근사(추정 백필).
UPDATE hall_assignment ha
   SET occupy_start = e.start_date,
       occupy_end   = e.end_date
  FROM event e
 WHERE ha.event_id = e.id
   AND ha.occupy_start IS NULL
   AND e.start_date IS NOT NULL;

-- 홀·기간 겹침 충돌 검사 가속 인덱스.
CREATE INDEX IF NOT EXISTS idx_hall_assignment_hall_period
    ON hall_assignment (hall_id, occupy_start, occupy_end);
