You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
542 B
30 lines
542 B
3 years ago
|
CREATE OR REPLACE FUNCTION notify_channel()
|
||
|
RETURNS TRIGGER
|
||
|
LANGUAGE PLPGSQL
|
||
|
AS
|
||
|
$$
|
||
|
DECLARE
|
||
|
target_channel TEXT;
|
||
|
BEGIN
|
||
|
SELECT channel_name
|
||
|
INTO target_channel
|
||
|
FROM targets
|
||
|
WHERE level_1 = NEW.level_1
|
||
|
AND level_2 = NEW.level_2;
|
||
|
|
||
|
if found then
|
||
|
PERFORM pg_notify(target_channel, NEW.payload);
|
||
|
UPDATE commands
|
||
|
SET channel_name = channel_name, channel_failure = false
|
||
|
WHERE id = NEW.id;
|
||
|
else
|
||
|
UPDATE commands
|
||
|
SET channel_failure = true
|
||
|
WHERE id = NEW.id;
|
||
|
end if;
|
||
|
|
||
|
RETURN NEW;
|
||
|
END;
|
||
|
$$;
|
||
|
|