Files
attune/migrations.old/20260119000001_add_execution_notify_trigger.sql

44 lines
1.4 KiB
PL/PgSQL

-- Migration: Add NOTIFY trigger for execution updates
-- This enables real-time SSE streaming of execution status changes
-- Function to send notifications on execution changes
CREATE OR REPLACE FUNCTION notify_execution_change()
RETURNS TRIGGER AS $$
DECLARE
payload JSONB;
BEGIN
-- Build JSON payload with execution details
payload := jsonb_build_object(
'entity_type', 'execution',
'entity_id', NEW.id,
'timestamp', NOW(),
'data', jsonb_build_object(
'id', NEW.id,
'status', NEW.status,
'action_id', NEW.action,
'action_ref', NEW.action_ref,
'result', NEW.result,
'created', NEW.created,
'updated', NEW.updated
)
);
-- Send notification to the attune_notifications channel
PERFORM pg_notify('attune_notifications', payload::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Trigger to send pg_notify on execution insert or update
CREATE TRIGGER notify_execution_change
AFTER INSERT OR UPDATE ON execution
FOR EACH ROW
EXECUTE FUNCTION notify_execution_change();
-- Add comment
COMMENT ON FUNCTION notify_execution_change() IS
'Sends PostgreSQL NOTIFY for execution changes to enable real-time SSE streaming';
COMMENT ON TRIGGER notify_execution_change ON execution IS
'Broadcasts execution changes via pg_notify for SSE clients';