Files
planilla/api/prisma/migrations/20250609211800_notify_others_sse/migration.sql

59 lines
1.7 KiB
PL/PgSQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- prisma/migrations/20250609211800_notify_others_sse/migration.sql
/* 0⃣ Limpieza */
DROP FUNCTION IF EXISTS notify_planilla_change() CASCADE;
DROP FUNCTION IF EXISTS notify_generic_change() CASCADE;
/* 1⃣ Función genérica */
CREATE OR REPLACE FUNCTION notify_sse_change()
RETURNS trigger AS $$
DECLARE
payload TEXT;
BEGIN
payload := json_build_object(
'table', TG_TABLE_NAME,
'operation', TG_OP,
'old', row_to_json(OLD),
'new', row_to_json(NEW)
)::text;
PERFORM pg_notify('sse_events', payload);
IF TG_OP = 'DELETE' THEN
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE plpgsql;
/* 2⃣ Drop de triggers viejos (normal o constraint) */
DROP TRIGGER IF EXISTS planilla_notify_trigger ON "Planilla";
DROP TRIGGER IF EXISTS cliente_notify_trigger ON "Cliente";
DROP TRIGGER IF EXISTS tarea_notify_trigger ON "TareaRealizada";
DROP TRIGGER IF EXISTS asistencia_notify_trigger ON "Asistencia";
/* 3⃣ Constraint triggers DEFERRABLE */
CREATE CONSTRAINT TRIGGER planilla_notify_trigger
AFTER INSERT OR UPDATE OR DELETE ON "Planilla"
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE notify_sse_change();
CREATE CONSTRAINT TRIGGER cliente_notify_trigger
AFTER INSERT OR UPDATE OR DELETE ON "Cliente"
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE notify_sse_change();
CREATE CONSTRAINT TRIGGER tarea_notify_trigger
AFTER INSERT OR UPDATE OR DELETE ON "TareaRealizada"
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE notify_sse_change();
CREATE CONSTRAINT TRIGGER asistencia_notify_trigger
AFTER INSERT OR UPDATE OR DELETE ON "Asistencia"
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE notify_sse_change();