merchant

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

meson.build (5559B)


      1 sqldir = get_option('datadir') / 'taler-merchant' / 'sql'
      2 
      3 # Input files for the amalgamated global_procedures.sql.
      4 # The order matters.
      5 sql_global_procedures = [
      6     '../pg_interval_to_start.sql',
      7     '../pg_base32_crockford.sql',
      8     '../pg_uri_escape.sql',
      9     '../pg_replace_placeholder.sql',
     10     '../get_report_by_token.sql',
     11     '../create_tables.sql',
     12     '../pg_fixup_instance_schema.sql',
     13     '../iterate_outdated_kyc_statuses.sql',
     14     '../iterate_wirewatch_accounts.sql',
     15     '../iterate_open_expected_transfers.sql',
     16     '../iterate_all_donau_instances.sql',
     17     '../do_solve_mfa_challenge.sql',
     18     '../iterate_pending_deposits.sql',
     19     '../iterate_pending_reports.sql',
     20     '../pg_select_accounts.sql',
     21     '../pg_create_instance_schema.sql',
     22     '../pg_create_instance_trigger.sql',
     23     '../gc.sql',
     24 ]
     25 
     26 gprocedures_sql = custom_target(
     27     'sql_global_procedures',
     28     input: sql_global_procedures,
     29     output: 'global_procedures.sql',
     30     capture: true,
     31     command: ['./gen-procedures.sh', 'merchant', '@INPUT@'],
     32     install: true,
     33     install_dir: sqldir,
     34 )
     35 
     36 sql_instance_procedures = [
     37     '../pg_statistics_helpers.sql',
     38     '../pg_do_handle_inventory_changes.sql',
     39     '../pg_do_handle_category_changes.sql',
     40     '../delete_order.sql',
     41     '../delete_product.sql',
     42     '../delete_unit.sql',
     43     '../insert_unit.sql',
     44     '../update_unit.sql',
     45     '../iterate_statistic_interval_amounts.sql',
     46     '../iterate_statistic_interval_counters.sql',
     47     '../insert_deposit_to_transfer.sql',
     48     '../insert_product.sql',
     49     '../insert_inventory_lock.sql',
     50     '../insert_issued_token.sql',
     51     '../insert_used_token.sql',
     52     '../insert_transfer_details.sql',
     53     '../update_product.sql',
     54     '../insert_kyc_status.sql',
     55     '../insert_kyc_failure.sql',
     56     '../set_tos_accepted_early.sql',
     57     '../update_category.sql',
     58     '../update_product_group.sql',
     59     '../update_money_pot.sql',
     60     '../update_money_pot_totals.sql',
     61     '../iterate_kyc_statuses.sql',
     62     '../insert_transfer.sql',
     63     '../insert_unclaim_signature.sql',
     64     '../insert_deposit_confirmation.sql',
     65     '../do_insert_account.sql',
     66     '../update_to_account_inactive.sql',
     67     '../do_expire_locks.sql',
     68     '../pg_merchant_send_account_notification.sql',
     69     '../pg_merchant_account_trigger.sql',
     70     '../pg_merchant_send_kyc_notification.sql',
     71     '../pg_merchant_kyc_trigger.sql',
     72     '../pg_triggers.sql',
     73     '../pg_update_inventory_locked.sql',
     74 ]
     75 
     76 iprocedures_sql = custom_target(
     77     'instance_procedures',
     78     input: sql_instance_procedures,
     79     output: 'instance_procedures.sql',
     80     capture: true,
     81     command: ['./gen-procedures.sh', 'merchant_instances', '@INPUT@'],
     82     install: true,
     83     install_dir: sqldir,
     84 )
     85 
     86 # gen-procedures.sh wraps each concatenation above in a single
     87 # BEGIN ... COMMIT; make sure no input file closes that transaction early.
     88 test(
     89     'sql-procedures-transactions',
     90     find_program('check-procedures-tx.sh'),
     91     args: sql_global_procedures + sql_instance_procedures,
     92     workdir: meson.current_source_dir(),
     93     suite: ['backenddb'],
     94 )
     95 
     96 generated_sql = [
     97     ['drop.sql'],
     98     ['versioning.sql'],
     99     ['merchant-0001.sql'],
    100     ['merchant-0002.sql'],
    101     ['merchant-0003.sql'],
    102     ['merchant-0004.sql'],
    103     ['merchant-0005.sql'],
    104     ['merchant-0006.sql'],
    105     ['merchant-0007.sql'],
    106     ['merchant-0008.sql'],
    107     ['merchant-0009.sql'],
    108     ['merchant-0010.sql'],
    109     ['merchant-0011.sql'],
    110     ['merchant-0012.sql'],
    111     ['merchant-0013.sql'],
    112     ['merchant-0014.sql'],
    113     ['merchant-0015.sql'],
    114     ['merchant-0016.sql'],
    115     ['merchant-0017.sql'],
    116     ['merchant-0018.sql'],
    117     ['merchant-0019.sql'],
    118     ['merchant-0020.sql'],
    119     ['merchant-0021.sql'],
    120     ['merchant-0022.sql'],
    121     ['merchant-0023.sql'],
    122     ['merchant-0024.sql'],
    123     ['merchant-0025.sql'],
    124     ['merchant-0026.sql'],
    125     ['merchant-0027.sql'],
    126     ['merchant-0028.sql'],
    127     ['merchant-0029.sql'],
    128     ['merchant-0030.sql'],
    129     ['merchant-0031.sql'],
    130     ['merchant-0032.sql'],
    131     ['merchant-0033.sql'],
    132     ['merchant-0034.sql'],
    133     ['merchant-0035.sql'],
    134     # Note: 36 generated below!
    135     ['merchant-0037.sql'],
    136     ['merchant-0038.sql'],
    137     ['merchant-0039.sql'],
    138     ['merchant-0040.sql'],
    139     ['merchant-0041.sql'],
    140     ['merchant-0042.sql'],
    141     ['merchant-0043.sql'],
    142     ['merchant-0044.sql'],
    143     ['merchant-0045.sql'],
    144     ['merchant-0046.sql'],
    145     ['merchant-0047.sql'],
    146 ]
    147 
    148 migration_sql = []
    149 foreach g : generated_sql
    150     migration_sql += custom_target(
    151         'gen-merchantdb-' + g[0],
    152         input: g[0],
    153         output: g[0],
    154         capture: true,
    155         command: ['./amalgamate-sql.sh', '@INPUT@'],
    156         install: true,
    157         install_dir: sqldir,
    158     )
    159 endforeach
    160 
    161 
    162 migration_sql += custom_target(
    163     'gen-merchantdb-merchant_0036.sql',
    164     input: [
    165         'merchant-0036.sql.in',
    166         '../create_tables.sql',
    167         '../pg_create_instance_schema.sql',
    168         '../pg_fixup_instance_schema.sql',
    169         'merchant-0036-init.sql.fragment',
    170         'merchant-0036-copy.sql.fragment',
    171         'merchant-0036-drop.sql.fragment',
    172         'merchant-0036-setval.sql.fragment',
    173     ],
    174     output: ['merchant-0036.sql'],
    175     capture: true,
    176     command: ['./preprocess-sql.sh', '@INPUT@'],
    177     install: true,
    178     install_dir: sqldir,
    179 )
    180 
    181 test(
    182     'order-sequence-migrations',
    183     find_program('python3'),
    184     args: [
    185         files('../test_order_sequence_migrations.py'),
    186         meson.current_source_dir(),
    187         meson.current_build_dir(),
    188     ],
    189     depends: migration_sql,
    190     suite: ['backenddb'],
    191     timeout: 120,
    192 )