trying to rework database migrations
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
-- Migration: Add rule_ref and trigger_ref to execution notification payload
|
||||
-- This includes enforcement information in real-time notifications to avoid additional API calls
|
||||
|
||||
-- Drop the existing trigger first
|
||||
DROP TRIGGER IF EXISTS notify_execution_change ON execution;
|
||||
|
||||
-- Replace the notification function to include enforcement details
|
||||
CREATE OR REPLACE FUNCTION notify_execution_change()
|
||||
RETURNS TRIGGER AS $$
|
||||
DECLARE
|
||||
payload JSONB;
|
||||
enforcement_rule_ref TEXT;
|
||||
enforcement_trigger_ref TEXT;
|
||||
BEGIN
|
||||
-- Lookup enforcement details if this execution is linked to an enforcement
|
||||
IF NEW.enforcement IS NOT NULL THEN
|
||||
SELECT rule_ref, trigger_ref
|
||||
INTO enforcement_rule_ref, enforcement_trigger_ref
|
||||
FROM enforcement
|
||||
WHERE id = NEW.enforcement;
|
||||
END IF;
|
||||
|
||||
-- Build JSON payload with execution details including rule/trigger info
|
||||
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,
|
||||
'enforcement', NEW.enforcement,
|
||||
'rule_ref', enforcement_rule_ref,
|
||||
'trigger_ref', enforcement_trigger_ref,
|
||||
'parent', NEW.parent,
|
||||
'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;
|
||||
|
||||
-- Recreate the trigger
|
||||
CREATE TRIGGER notify_execution_change
|
||||
AFTER INSERT OR UPDATE ON execution
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION notify_execution_change();
|
||||
|
||||
-- Update comment
|
||||
COMMENT ON FUNCTION notify_execution_change() IS
|
||||
'Sends PostgreSQL NOTIFY for execution changes with enforcement details (rule_ref, trigger_ref) to enable real-time SSE streaming without additional API calls';
|
||||
Reference in New Issue
Block a user