957e912a7f
Sprints B (05-03) e C (05-04) acumulados: - NotificationDrawer/Item redesign (visual mais limpo, ações inline) - Dock pins compose (useMelissaDockPins) + cache store global (melissaCacheStore) - MelissaAgenda: timeline FullCalendar parity + cards resumo, histórico card com useMelissaAgendaHistorico, MelissaEventoPanel ajustado - useFeriados: cache opt-in pra evitar fetch redundante de feriados - PatientProntuario: aba Visão Geral nova; PatientConversationsTab polish - AgendaClinicMosaic / AgendaTerapeutaPage / useAgendaSettings: ajustes de paridade com Melissa - DocumentsListPage: pequenos ajustes - DB migration 20260504000001: fix do trigger pra status 'excluido' nas cancel_notifications Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.5 KiB
PL/PgSQL
35 lines
1.5 KiB
PL/PgSQL
-- ==========================================================================
|
|
-- Agencia PSI — Fix: cancel_notifications_on_session_cancel referencia 'excluido'
|
|
-- ==========================================================================
|
|
-- A funcao trigger comparava NEW.status IN ('cancelado', 'excluido'), mas o
|
|
-- enum status_evento_agenda nunca teve o valor 'excluido'. Postgres precisa
|
|
-- fazer cast do literal pro tipo do enum, e o cast falha com:
|
|
--
|
|
-- invalid input value for enum status_evento_agenda: "excluido"
|
|
--
|
|
-- Isso quebrava QUALQUER UPDATE que mudasse status pra um valor != atual,
|
|
-- pois o IF tinha que avaliar a expressao com 'excluido'.
|
|
--
|
|
-- O front-end nunca usou 'excluido' (statusOptions em AgendaEventDialog.vue
|
|
-- so tem agendado/realizado/faltou/cancelado/remarcado). Delete e hard delete
|
|
-- via DELETE — nao tem soft-delete em agenda_eventos. Logo, 'excluido' eh
|
|
-- codigo morto e pode ser removido.
|
|
--
|
|
-- Refs:
|
|
-- - src/features/agenda/components/AgendaEventDialog.vue:1071 (statusOptions)
|
|
-- - schema/03_functions/_all.sql:1056 (funcao original)
|
|
-- ==========================================================================
|
|
|
|
CREATE OR REPLACE FUNCTION public.cancel_notifications_on_session_cancel() RETURNS trigger
|
|
LANGUAGE plpgsql SECURITY DEFINER
|
|
AS $$
|
|
BEGIN
|
|
IF NEW.status = 'cancelado' AND OLD.status <> 'cancelado' THEN
|
|
PERFORM public.cancel_patient_pending_notifications(
|
|
NEW.patient_id, NULL, NEW.id
|
|
);
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|