libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 661c1df15b4c86d80beb34a6089c2eb3e74b14a7
parent 40445f1c2f630eb85bbee42027a024b55f8d8ee7
Author: MS <ms@taler.net>
Date:   Tue, 24 Oct 2023 12:25:31 +0200

installing nexus SQL procedures file

Diffstat:
MMakefile | 1-
Adatabase-versioning/libeufin-nexus-procedures.sql | 41+++++++++++++++++++++++++++++++++++++++++
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';