merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 87f8d4deb82e5b4e05e033fee13c5d2e96ad3096
parent fefb8c3f0835de480f34b632f4516c3852bf217c
Author: Christian Grothoff <christian@grothoff.org>
Date:   Wed, 15 Apr 2026 23:00:52 +0200

reorganize merchantdb directory a bit

Diffstat:
Dsrc/backenddb/Makefile.sql | 13-------------
Msrc/backenddb/meson.build | 54+-----------------------------------------------------
Dsrc/backenddb/procedures.sql.in | 67-------------------------------------------------------------------
Asrc/backenddb/sql-schema/Makefile.sql | 13+++++++++++++
Rsrc/backenddb/drop.sql -> src/backenddb/sql-schema/drop.sql | 0
Rsrc/backenddb/merchant-0001.sql -> src/backenddb/sql-schema/merchant-0001.sql | 0
Rsrc/backenddb/merchant-0002.sql -> src/backenddb/sql-schema/merchant-0002.sql | 0
Rsrc/backenddb/merchant-0003.sql -> src/backenddb/sql-schema/merchant-0003.sql | 0
Rsrc/backenddb/merchant-0004.sql -> src/backenddb/sql-schema/merchant-0004.sql | 0
Rsrc/backenddb/merchant-0005.sql -> src/backenddb/sql-schema/merchant-0005.sql | 0
Rsrc/backenddb/merchant-0006.sql -> src/backenddb/sql-schema/merchant-0006.sql | 0
Rsrc/backenddb/merchant-0007.sql -> src/backenddb/sql-schema/merchant-0007.sql | 0
Rsrc/backenddb/merchant-0008.sql -> src/backenddb/sql-schema/merchant-0008.sql | 0
Rsrc/backenddb/merchant-0009.sql -> src/backenddb/sql-schema/merchant-0009.sql | 0
Rsrc/backenddb/merchant-0010.sql -> src/backenddb/sql-schema/merchant-0010.sql | 0
Rsrc/backenddb/merchant-0011.sql -> src/backenddb/sql-schema/merchant-0011.sql | 0
Rsrc/backenddb/merchant-0012.sql -> src/backenddb/sql-schema/merchant-0012.sql | 0
Rsrc/backenddb/merchant-0013.sql -> src/backenddb/sql-schema/merchant-0013.sql | 0
Rsrc/backenddb/merchant-0014.sql -> src/backenddb/sql-schema/merchant-0014.sql | 0
Rsrc/backenddb/merchant-0015.sql -> src/backenddb/sql-schema/merchant-0015.sql | 0
Rsrc/backenddb/merchant-0016.sql -> src/backenddb/sql-schema/merchant-0016.sql | 0
Rsrc/backenddb/merchant-0017.sql -> src/backenddb/sql-schema/merchant-0017.sql | 0
Rsrc/backenddb/merchant-0018.sql -> src/backenddb/sql-schema/merchant-0018.sql | 0
Rsrc/backenddb/merchant-0019.sql -> src/backenddb/sql-schema/merchant-0019.sql | 0
Rsrc/backenddb/merchant-0020.sql -> src/backenddb/sql-schema/merchant-0020.sql | 0
Rsrc/backenddb/merchant-0021.sql -> src/backenddb/sql-schema/merchant-0021.sql | 0
Rsrc/backenddb/merchant-0022.sql -> src/backenddb/sql-schema/merchant-0022.sql | 0
Rsrc/backenddb/merchant-0023.sql -> src/backenddb/sql-schema/merchant-0023.sql | 0
Rsrc/backenddb/merchant-0024.sql -> src/backenddb/sql-schema/merchant-0024.sql | 0
Rsrc/backenddb/merchant-0025.sql -> src/backenddb/sql-schema/merchant-0025.sql | 0
Rsrc/backenddb/merchant-0026.sql -> src/backenddb/sql-schema/merchant-0026.sql | 0
Rsrc/backenddb/merchant-0027.sql -> src/backenddb/sql-schema/merchant-0027.sql | 0
Rsrc/backenddb/merchant-0028.sql -> src/backenddb/sql-schema/merchant-0028.sql | 0
Rsrc/backenddb/merchant-0029.sql -> src/backenddb/sql-schema/merchant-0029.sql | 0
Rsrc/backenddb/merchant-0030.sql -> src/backenddb/sql-schema/merchant-0030.sql | 0
Rsrc/backenddb/merchant-0031.sql -> src/backenddb/sql-schema/merchant-0031.sql | 0
Rsrc/backenddb/merchant-0032.sql -> src/backenddb/sql-schema/merchant-0032.sql | 0
Rsrc/backenddb/merchant-0033.sql -> src/backenddb/sql-schema/merchant-0033.sql | 0
Rsrc/backenddb/merchant-0034.sql -> src/backenddb/sql-schema/merchant-0034.sql | 0
Asrc/backenddb/sql-schema/meson.build | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/backenddb/sql-schema/procedures.sql.in | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/backenddb/versioning.sql -> src/backenddb/sql-schema/versioning.sql | 0
42 files changed, 132 insertions(+), 133 deletions(-)

diff --git a/src/backenddb/Makefile.sql b/src/backenddb/Makefile.sql @@ -1,13 +0,0 @@ -procedures.sql: procedures.sql.in pg_*.sql - chmod +w $@ || true - gcc -E -P -undef - < procedures.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ - chmod ugo-w $@ - - -CLEANFILES = \ - procedures.sql - -all: ${CLEANFILES} - -clean: - rm ${CLEANFILES} diff --git a/src/backenddb/meson.build b/src/backenddb/meson.build @@ -2,59 +2,7 @@ install_data('merchantdb-postgres.conf', install_dir: pkgcfgdir) - -sqldir = get_option('datadir') / 'taler-merchant' / 'sql' -plugindir = get_option('libdir') / 'taler-merchant' - -# FIXME possibly provide this output in the tgz through dist script -run_command('make', '-f', 'Makefile.sql', 'all', check: true) - -sqlfiles = [ - 'drop.sql', - 'merchant-0001.sql', - 'merchant-0002.sql', - 'merchant-0003.sql', - 'merchant-0004.sql', - 'merchant-0005.sql', - 'merchant-0006.sql', - 'merchant-0007.sql', - 'merchant-0008.sql', - 'merchant-0009.sql', - 'merchant-0010.sql', - 'merchant-0011.sql', - 'merchant-0012.sql', - 'merchant-0013.sql', - 'merchant-0014.sql', - 'merchant-0015.sql', - 'merchant-0016.sql', - 'merchant-0017.sql', - 'merchant-0018.sql', - 'merchant-0019.sql', - 'merchant-0020.sql', - 'merchant-0021.sql', - 'merchant-0022.sql', - 'merchant-0023.sql', - 'merchant-0024.sql', - 'merchant-0025.sql', - 'merchant-0026.sql', - 'merchant-0027.sql', - 'merchant-0028.sql', - 'merchant-0029.sql', - 'merchant-0030.sql', - 'merchant-0031.sql', - 'merchant-0032.sql', - 'merchant-0033.sql', - 'merchant-0034.sql', - 'procedures.sql', - 'versioning.sql', -] - -install_data(sources: sqlfiles, install_dir: sqldir) - -# This makes meson copy the files into the build directory for testing -foreach f : sqlfiles - configure_file(input: f, output: f, copy: true) -endforeach +subdir('sql-schema') libtalermerchantdb = library( 'talermerchantdb', diff --git a/src/backenddb/procedures.sql.in b/src/backenddb/procedures.sql.in @@ -1,67 +0,0 @@ --- --- This file is part of TALER --- Copyright (C) 2024-2025 Taler Systems SA --- --- TALER is free software; you can redistribute it and/or modify it under the --- terms of the GNU General Public License as published by the Free Software --- Foundation; either version 3, or (at your option) any later version. --- --- TALER is distributed in the hope that it will be useful, but WITHOUT ANY --- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR --- A PARTICULAR PURPOSE. See the GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License along with --- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> --- - -BEGIN; - -SET search_path TO merchant; - -#include "pg_insert_deposit_to_transfer.sql" -#include "pg_insert_product.sql" -#include "pg_insert_issued_token.sql" -#include "pg_insert_spent_token.sql" -#include "pg_insert_transfer_details.sql" -#include "pg_update_product.sql" -#include "pg_solve_mfa_challenge.sql" -#include "pg_account_kyc_set_status.sql" -#include "pg_account_kyc_set_failed.sql" -#include "pg_statistics_helpers.sql" -#include "pg_do_handle_inventory_changes.sql" -#include "pg_do_handle_category_changes.sql" -#include "pg_update_product_group.sql" -#include "pg_update_money_pot.sql" -#include "pg_increment_money_pots.sql" -#include "pg_account_kyc_get_status.sql" -#include "pg_insert_transfer.sql" -#include "pg_insert_deposit_confirmation.sql" -#include "pg_base32_crockford.sql" -#include "pg_uri_escape.sql" -#include "pg_merchant_kyc_trigger.sql" -#include "pg_merchant_send_kyc_notification.sql" -#include "pg_activate_account.sql" -#include "pg_inactivate_account.sql" - -DROP PROCEDURE IF EXISTS merchant_do_gc; -CREATE PROCEDURE merchant_do_gc(in_now INT8) -LANGUAGE plpgsql -AS $$ -BEGIN - DELETE FROM merchant_instances - WHERE validation_needed - AND validation_expiration < in_now; - CALL merchant_statistic_amount_gc (); - CALL merchant_statistic_bucket_gc (); - CALL merchant_statistic_counter_gc (); - - DELETE FROM tan_challenges - WHERE expiration_date < in_now; - DELETE FROM merchant_unclaim_signatures - WHERE expiration_time < in_now; -END $$; -COMMENT ON PROCEDURE merchant_do_gc - IS 'calls all other garbage collection subroutines'; - - -COMMIT; diff --git a/src/backenddb/sql-schema/Makefile.sql b/src/backenddb/sql-schema/Makefile.sql @@ -0,0 +1,13 @@ +procedures.sql: procedures.sql.in ../pg_*.sql + chmod +w $@ || true + gcc -E -P -undef - < procedures.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + + +CLEANFILES = \ + procedures.sql + +all: ${CLEANFILES} + +clean: + rm ${CLEANFILES} diff --git a/src/backenddb/drop.sql b/src/backenddb/sql-schema/drop.sql diff --git a/src/backenddb/merchant-0001.sql b/src/backenddb/sql-schema/merchant-0001.sql diff --git a/src/backenddb/merchant-0002.sql b/src/backenddb/sql-schema/merchant-0002.sql diff --git a/src/backenddb/merchant-0003.sql b/src/backenddb/sql-schema/merchant-0003.sql diff --git a/src/backenddb/merchant-0004.sql b/src/backenddb/sql-schema/merchant-0004.sql diff --git a/src/backenddb/merchant-0005.sql b/src/backenddb/sql-schema/merchant-0005.sql diff --git a/src/backenddb/merchant-0006.sql b/src/backenddb/sql-schema/merchant-0006.sql diff --git a/src/backenddb/merchant-0007.sql b/src/backenddb/sql-schema/merchant-0007.sql diff --git a/src/backenddb/merchant-0008.sql b/src/backenddb/sql-schema/merchant-0008.sql diff --git a/src/backenddb/merchant-0009.sql b/src/backenddb/sql-schema/merchant-0009.sql diff --git a/src/backenddb/merchant-0010.sql b/src/backenddb/sql-schema/merchant-0010.sql diff --git a/src/backenddb/merchant-0011.sql b/src/backenddb/sql-schema/merchant-0011.sql diff --git a/src/backenddb/merchant-0012.sql b/src/backenddb/sql-schema/merchant-0012.sql diff --git a/src/backenddb/merchant-0013.sql b/src/backenddb/sql-schema/merchant-0013.sql diff --git a/src/backenddb/merchant-0014.sql b/src/backenddb/sql-schema/merchant-0014.sql diff --git a/src/backenddb/merchant-0015.sql b/src/backenddb/sql-schema/merchant-0015.sql diff --git a/src/backenddb/merchant-0016.sql b/src/backenddb/sql-schema/merchant-0016.sql diff --git a/src/backenddb/merchant-0017.sql b/src/backenddb/sql-schema/merchant-0017.sql diff --git a/src/backenddb/merchant-0018.sql b/src/backenddb/sql-schema/merchant-0018.sql diff --git a/src/backenddb/merchant-0019.sql b/src/backenddb/sql-schema/merchant-0019.sql diff --git a/src/backenddb/merchant-0020.sql b/src/backenddb/sql-schema/merchant-0020.sql diff --git a/src/backenddb/merchant-0021.sql b/src/backenddb/sql-schema/merchant-0021.sql diff --git a/src/backenddb/merchant-0022.sql b/src/backenddb/sql-schema/merchant-0022.sql diff --git a/src/backenddb/merchant-0023.sql b/src/backenddb/sql-schema/merchant-0023.sql diff --git a/src/backenddb/merchant-0024.sql b/src/backenddb/sql-schema/merchant-0024.sql diff --git a/src/backenddb/merchant-0025.sql b/src/backenddb/sql-schema/merchant-0025.sql diff --git a/src/backenddb/merchant-0026.sql b/src/backenddb/sql-schema/merchant-0026.sql diff --git a/src/backenddb/merchant-0027.sql b/src/backenddb/sql-schema/merchant-0027.sql diff --git a/src/backenddb/merchant-0028.sql b/src/backenddb/sql-schema/merchant-0028.sql diff --git a/src/backenddb/merchant-0029.sql b/src/backenddb/sql-schema/merchant-0029.sql diff --git a/src/backenddb/merchant-0030.sql b/src/backenddb/sql-schema/merchant-0030.sql diff --git a/src/backenddb/merchant-0031.sql b/src/backenddb/sql-schema/merchant-0031.sql diff --git a/src/backenddb/merchant-0032.sql b/src/backenddb/sql-schema/merchant-0032.sql diff --git a/src/backenddb/merchant-0033.sql b/src/backenddb/sql-schema/merchant-0033.sql diff --git a/src/backenddb/merchant-0034.sql b/src/backenddb/sql-schema/merchant-0034.sql diff --git a/src/backenddb/sql-schema/meson.build b/src/backenddb/sql-schema/meson.build @@ -0,0 +1,51 @@ +sqldir = get_option('datadir') / 'taler-merchant' / 'sql' + +# FIXME possibly provide this output in the tgz through dist script +run_command('make', '-f', 'Makefile.sql', 'all', check: true) + +sqlfiles = [ + 'drop.sql', + 'merchant-0001.sql', + 'merchant-0002.sql', + 'merchant-0003.sql', + 'merchant-0004.sql', + 'merchant-0005.sql', + 'merchant-0006.sql', + 'merchant-0007.sql', + 'merchant-0008.sql', + 'merchant-0009.sql', + 'merchant-0010.sql', + 'merchant-0011.sql', + 'merchant-0012.sql', + 'merchant-0013.sql', + 'merchant-0014.sql', + 'merchant-0015.sql', + 'merchant-0016.sql', + 'merchant-0017.sql', + 'merchant-0018.sql', + 'merchant-0019.sql', + 'merchant-0020.sql', + 'merchant-0021.sql', + 'merchant-0022.sql', + 'merchant-0023.sql', + 'merchant-0024.sql', + 'merchant-0025.sql', + 'merchant-0026.sql', + 'merchant-0027.sql', + 'merchant-0028.sql', + 'merchant-0029.sql', + 'merchant-0030.sql', + 'merchant-0031.sql', + 'merchant-0032.sql', + 'merchant-0033.sql', + 'merchant-0034.sql', + 'procedures.sql', + 'versioning.sql', +] + +install_data(sources: sqlfiles, install_dir: sqldir) + +# This makes meson copy the files into the build directory for testing +foreach f : sqlfiles + configure_file(input: f, output: f, copy: true) +endforeach diff --git a/src/backenddb/sql-schema/procedures.sql.in b/src/backenddb/sql-schema/procedures.sql.in @@ -0,0 +1,67 @@ +-- +-- This file is part of TALER +-- Copyright (C) 2024-2025 Taler Systems SA +-- +-- TALER is free software; you can redistribute it and/or modify it under the +-- terms of the GNU General Public License as published by the Free Software +-- Foundation; either version 3, or (at your option) any later version. +-- +-- TALER is distributed in the hope that it will be useful, but WITHOUT ANY +-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +-- A PARTICULAR PURPOSE. See the GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License along with +-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +-- + +BEGIN; + +SET search_path TO merchant; + +#include "../pg_insert_deposit_to_transfer.sql" +#include "../pg_insert_product.sql" +#include "../pg_insert_issued_token.sql" +#include "../pg_insert_spent_token.sql" +#include "../pg_insert_transfer_details.sql" +#include "../pg_update_product.sql" +#include "../pg_solve_mfa_challenge.sql" +#include "../pg_account_kyc_set_status.sql" +#include "../pg_account_kyc_set_failed.sql" +#include "../pg_statistics_helpers.sql" +#include "../pg_do_handle_inventory_changes.sql" +#include "../pg_do_handle_category_changes.sql" +#include "../pg_update_product_group.sql" +#include "../pg_update_money_pot.sql" +#include "../pg_increment_money_pots.sql" +#include "../pg_account_kyc_get_status.sql" +#include "../pg_insert_transfer.sql" +#include "../pg_insert_deposit_confirmation.sql" +#include "../pg_base32_crockford.sql" +#include "../pg_uri_escape.sql" +#include "../pg_merchant_kyc_trigger.sql" +#include "../pg_merchant_send_kyc_notification.sql" +#include "../pg_activate_account.sql" +#include "../pg_inactivate_account.sql" + +DROP PROCEDURE IF EXISTS merchant_do_gc; +CREATE PROCEDURE merchant_do_gc(in_now INT8) +LANGUAGE plpgsql +AS $$ +BEGIN + DELETE FROM merchant_instances + WHERE validation_needed + AND validation_expiration < in_now; + CALL merchant_statistic_amount_gc (); + CALL merchant_statistic_bucket_gc (); + CALL merchant_statistic_counter_gc (); + + DELETE FROM tan_challenges + WHERE expiration_date < in_now; + DELETE FROM merchant_unclaim_signatures + WHERE expiration_time < in_now; +END $$; +COMMENT ON PROCEDURE merchant_do_gc + IS 'calls all other garbage collection subroutines'; + + +COMMIT; diff --git a/src/backenddb/versioning.sql b/src/backenddb/sql-schema/versioning.sql