-- ============================================================================
-- Liga documents a clinical_notes (preenche FK órfã)
-- ----------------------------------------------------------------------------
-- A coluna `documents.session_note_id` existia desde antes apontando pra uma
-- tabela `session_notes` que nunca foi criada. Agora que `clinical_notes`
-- existe e abrange anamnese/evolução/plano (não só sessão), renomeia pra
-- `clinical_note_id` e adiciona FK constraint.
--
-- PRÉ-CHECK: a query abaixo deve retornar 0 antes de rodar esta migration.
--   SELECT count(*) FROM public.documents WHERE session_note_id IS NOT NULL;
-- Se houver dados, eles são órfãos (referenciam tabela inexistente) — limpar
-- antes de adicionar a FK constraint, ou ela falha.
-- ============================================================================

BEGIN;

-- 1. Limpa eventuais órfãos (FK nunca foi enforced, mas valor pode ter sido
--    setado por código no front antes da migration). Defesa em profundidade.
UPDATE public.documents
   SET session_note_id = NULL
 WHERE session_note_id IS NOT NULL
   AND NOT EXISTS (
       SELECT 1 FROM public.clinical_notes cn
        WHERE cn.id = documents.session_note_id
   );

-- 2. Rename
ALTER TABLE public.documents
    RENAME COLUMN session_note_id TO clinical_note_id;

-- 3. FK constraint
ALTER TABLE public.documents
    ADD CONSTRAINT documents_clinical_note_fkey
    FOREIGN KEY (clinical_note_id)
    REFERENCES public.clinical_notes(id)
    ON DELETE SET NULL;

-- 4. Index pra reverse lookup (documentos de uma nota)
CREATE INDEX IF NOT EXISTS idx_documents_clinical_note
    ON public.documents (clinical_note_id)
    WHERE clinical_note_id IS NOT NULL AND deleted_at IS NULL;

COMMENT ON COLUMN public.documents.clinical_note_id IS
    'Vínculo opcional a uma nota clínica (anexar PDF a anamnese/evolução). Renomeado de session_note_id em 2026-05-20.';

COMMIT;
