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