-- Backfill: linkar document_generated.documento_id em registros antigos
-- pra suportar re-edicao in-place de documentos gerados.
--
-- O codigo novo (DocumentGenerate.service.js saveGeneratedDocument) ja
-- preenche o documento_id no INSERT pra criacoes novas. Este script eh
-- one-off pra docs gerados ANTES desse fix.
--
-- Match: dg.pdf_path = d.bucket_path + match de tenant/patient pra evitar
-- linkar a doc errado em caso colidente. Registros sem match (paths que
-- nao existem mais em documents — docs deletados/cleanup) ficam orfaos
-- com documento_id=NULL: nao quebra nada, so nao tem caminho de re-edit.

BEGIN;

UPDATE public.document_generated dg
SET documento_id = d.id
FROM public.documents d
WHERE dg.documento_id IS NULL
  AND dg.pdf_path = d.bucket_path
  AND dg.patient_id = d.patient_id
  AND dg.tenant_id = d.tenant_id
  AND d.deleted_at IS NULL;

-- Relatorio pos-backfill
DO $REPORT$
DECLARE
    v_linked int;
    v_orphans int;
BEGIN
    SELECT count(*) FILTER (WHERE documento_id IS NOT NULL),
           count(*) FILTER (WHERE documento_id IS NULL)
    INTO v_linked, v_orphans
    FROM public.document_generated;
    RAISE NOTICE 'document_generated: % linked, % orphans (sem documents correspondente)',
        v_linked, v_orphans;
END;
$REPORT$;

COMMIT;
