zitadel/cmd/setup/45/postgres/03_queue_events_function.sql

35 lines
783 B
MySQL
Raw Normal View History

CREATE OR REPLACE FUNCTION queue_events()
RETURNS TRIGGER
LANGUAGE PLpgSQL
AS $$
BEGIN
INSERT INTO "queue" (
subscriber
, instance_id
, aggregate_type
, aggregate_id
, sequence
, position
, in_position_order
) SELECT
subscriber
, NEW.instance_id
, NEW.aggregate_type
, NEW.aggregate_id
, NEW."sequence"
, NEW.position
, NEW.in_tx_order
FROM
subscriptions
WHERE
(instance_id IS NULL OR NEW.instance_id = instance_id)
AND ("all" OR (
aggregate_type = NEW.aggregate_type
AND (
event_type IS NULL
OR NEW.event_type = event_type
))
);
RETURN NULL;
END;
$$;