-- ============================================================================ -- 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;