commit 661c1df15b4c86d80beb34a6089c2eb3e74b14a7
parent 40445f1c2f630eb85bbee42027a024b55f8d8ee7
Author: MS <ms@taler.net>
Date: Tue, 24 Oct 2023 12:25:31 +0200
installing nexus SQL procedures file
Diffstat:
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
@@ -43,7 +43,6 @@ install-bank:
install contrib/currencies.conf $(bank_config_dir)/
install -D database-versioning/libeufin-bank*.sql -t $(bank_sql_dir)
install -D database-versioning/versioning.sql -t $(bank_sql_dir)
- install -D database-versioning/libeufin-bank-procedures.sql -t $(bank_sql_dir)
install -d $(spa_dir)
cp contrib/wallet-core/demobank/* $(spa_dir)/
./gradlew -q -Pprefix=$(abs_destdir)$(prefix) bank:installToPrefix
diff --git a/database-versioning/libeufin-nexus-procedures.sql b/database-versioning/libeufin-nexus-procedures.sql
@@ -0,0 +1,41 @@
+BEGIN;
+SET search_path TO libeufin_nexus;
+
+CREATE OR REPLACE FUNCTION bounce_payment(
+ IN in_incoming_transaction_id BIGINT
+ ,IN in_initiation_time BIGINT
+ ,OUT out_nx_incoming_payment BOOLEAN
+)
+LANGUAGE plpgsql AS $$
+BEGIN
+
+INSERT INTO initiated_outgoing_transactions (
+ amount
+ ,wire_transfer_subject
+ ,credit_payto_uri
+ ,in_initiation_time
+ )
+ SELECT
+ amount
+ ,'refund: ' || wire_transfer_subject
+ ,debit_payto_uri
+ ,in_initiation_time
+ FROM incoming_transactions
+ WHERE incoming_transaction_id = in_incoming_transaction_id;
+
+IF NOT FOUND THEN
+ out_nx_incoming_payment=TRUE;
+ RETURN;
+END IF;
+out_nx_incoming_payment=FALSE;
+
+-- finally setting the payment as bounced. Not checking
+-- the update outcome since the row existence was checked
+-- just above.
+
+UPDATE incoming_transactions
+ SET bounced = true
+ WHERE incoming_transaction_id = in_incoming_transaction_id;
+END $$;
+
+COMMENT ON FUNCTION bounce_payment(BIGINT, BIGINT) IS 'Marks an incoming payment as bounced and initiates its refunding payment';