From a86a650e25c3728ed641d084a9027859c0947c81 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 25 Jan 2022 16:42:37 -0500 Subject: [PATCH] Allow check_and_notify_low_balance to be called outside of trigger For use from, eg, jmp-pay --- deploy/notify_low_balance.sql | 16 ++++++++++++---- revert/notify_low_balance.sql | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/deploy/notify_low_balance.sql b/deploy/notify_low_balance.sql index c80e6e9..e18905c 100644 --- a/deploy/notify_low_balance.sql +++ b/deploy/notify_low_balance.sql @@ -4,14 +4,22 @@ BEGIN; -CREATE OR REPLACE FUNCTION check_and_notify_low_balance() RETURNS TRIGGER AS $$ +CREATE OR REPLACE FUNCTION check_and_notify_low_balance( + customerid TEXT +) RETURNS VOID AS $$ DECLARE bal NUMERIC; BEGIN - SELECT balance INTO bal FROM balances WHERE customer_id = NEW.customer_id; + SELECT balance INTO bal FROM balances WHERE customer_id = customerid; IF bal < 5 THEN - SELECT pg_notify('low_balance', NEW.customer_id); + PERFORM pg_notify('low_balance', customerid); END IF; + END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION check_and_notify_low_balance_trigger() RETURNS TRIGGER AS $$ + BEGIN + PERFORM check_and_notify_low_balance(NEW.customer_id); RETURN NEW; END; $$ LANGUAGE plpgsql; @@ -20,6 +28,6 @@ CREATE TRIGGER notify_low_balance AFTER INSERT ON transactions FOR EACH ROW WHEN (NEW.amount < 0) - EXECUTE PROCEDURE check_and_notify_low_balance(); + EXECUTE PROCEDURE check_and_notify_low_balance_trigger(); COMMIT; diff --git a/revert/notify_low_balance.sql b/revert/notify_low_balance.sql index 2c6e2c0..056b0af 100644 --- a/revert/notify_low_balance.sql +++ b/revert/notify_low_balance.sql @@ -3,6 +3,7 @@ BEGIN; DROP TRIGGER notify_low_balance ON transactions; +DROP FUNCTION IF EXISTS check_and_notify_low_balance_trigger; DROP FUNCTION check_and_notify_low_balance; COMMIT; -- 2.38.5