-- =============================================================================
-- DC_DOCUMENT_PROGRESS_ALTER.sql
-- Ergänzt dc_project_documents um status und progress für Dokument-Fortschritt.
-- Idempotent: Fehler "Spalte existiert bereits" wird ignoriert.
-- =============================================================================

BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_project_documents ADD (
      status    VARCHAR2(20) DEFAULT ''PENDING'',
      progress  NUMBER       DEFAULT 0
    )
  ';
  DBMS_OUTPUT.PUT_LINE('Spalten status/progress 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 initialisieren
UPDATE dc_project_documents
SET    status   = 'PENDING',
       progress = 0
WHERE  status IS NULL;

COMMIT;

-- Check-Constraint (idempotent)
BEGIN
  EXECUTE IMMEDIATE '
    ALTER TABLE dc_project_documents
    ADD CONSTRAINT dc_project_documents_status_ck
    CHECK (status IN (''PENDING'', ''IN_PROGRESS'', ''COMPLETED'', ''ERROR''))
  ';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-2264, -2261) THEN NULL; -- Constraint existiert bereits
    ELSE RAISE;
    END IF;
END;
/

COMMIT;

EXIT;
