-- =============================================================================
-- DC_CATALOG_GEN_ALTER.sql
-- Ergänzt dc_question_catalogs um Spalten für asynchrone Katalog-Generierung.
-- Idempotent: Fehler "Spalte existiert bereits" wird ignoriert.
-- =============================================================================

BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_question_catalogs ADD (
      generation_status  VARCHAR2(20)   DEFAULT ''READY'',
      generation_error   VARCHAR2(4000)
    )
  ';
  DBMS_OUTPUT.PUT_LINE('Spalten generation_status/generation_error angelegt.');
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE = -1430 THEN
      DBMS_OUTPUT.PUT_LINE('Spalten existieren bereits – kein Änderungsbedarf.');
    ELSE
      RAISE;
    END IF;
END;
/

-- Bestehende Zeilen bekommen Status READY (Kataloge wurden manuell erstellt)
UPDATE dc_question_catalogs
SET    generation_status = 'READY'
WHERE  generation_status IS NULL;

COMMIT;

-- Constraint nachträglich hinzufügen (idempotent)
BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_question_catalogs
    ADD CONSTRAINT chk_cat_gen_status
    CHECK (generation_status IN (''GENERATING'', ''READY'', ''ERROR''))
  ';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-2264, -2261) THEN NULL; -- Constraint existiert bereits
    ELSE RAISE;
    END IF;
END;
/

COMMIT;
