-- =============================================================================
-- Bereinigt umschließende Markdown-Code-Fences (```markdown ... ```) aus der
-- Spalte TRANSLATED_TEXT in DC_PROJECT_DOCUMENTS.
--
-- Hintergrund: Das Übersetzungs-Modell hat den Text mal mit, mal ohne Fence
-- gespeichert. Der Backend-Code strippt den Fence ab jetzt beim Schreiben;
-- dieses Skript bereinigt die bereits vorhandenen Altdatensätze.
--
-- Idempotent: Datensätze ohne führenden ``` bleiben unverändert.
-- =============================================================================

SET SERVEROUTPUT ON

DECLARE
    v_count   PLS_INTEGER := 0;
    v_text    CLOB;
    v_nl      PLS_INTEGER;
BEGIN
    FOR rec IN (
        SELECT id, translated_text
          FROM dc_project_documents
         WHERE translated_text IS NOT NULL
           AND LTRIM(translated_text) LIKE '```%'
    ) LOOP
        v_text := LTRIM(rec.translated_text);

        -- Erste Zeile (z. B. ```markdown) entfernen
        v_nl := INSTR(v_text, CHR(10));
        IF v_nl > 0 THEN
            v_text := SUBSTR(v_text, v_nl + 1);
        END IF;

        -- Schließendes ``` am Ende entfernen
        v_text := RTRIM(v_text);
        IF SUBSTR(v_text, -3) = '```' THEN
            v_text := SUBSTR(v_text, 1, LENGTH(v_text) - 3);
        END IF;

        v_text := TRIM(v_text);

        UPDATE dc_project_documents
           SET translated_text = v_text
         WHERE id = rec.id;

        v_count := v_count + 1;
    END LOOP;

    COMMIT;
    DBMS_OUTPUT.PUT_LINE('Bereinigte Datensätze: ' || v_count);
END;
/
