From 571d43cef3732ed6f491d91a9e767a80008edeb1 Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Thu, 27 Jul 2023 23:57:07 +0200 Subject: [WiP] added TALER_AMOUNT type to Postgres - first in age_withdraw - Added a type TALER_AMOUNT (val INT8, frac INT4) to Postgres. - Added PLSQL functions/procedures - amount_normalize(a) - amount_add(a, b) - amount_left_minus_right(l, r, diff, ok bool) - Added PQ-helper functions - TALER_PQ_query_param_amount_tuple() - TALER_PQ_result_spec_amount_tuple() - In table 'age_withdraw', changed fields 'amount_with_fee_val' and '..._frac' into single field 'amount_with_fee' be of type TALER_AMOUNT - Changed functions/stored procedures 'do_age_withdraw' and 'get_age_withdraw' to use new APIs. => make check runs through without errors, age-withdraw and -reveal test passes. --- src/include/taler_pq_lib.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/include/taler_pq_lib.h') diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h index db77c53b..43561703 100644 --- a/src/include/taler_pq_lib.h +++ b/src/include/taler_pq_lib.h @@ -51,6 +51,19 @@ TALER_PQ_query_param_amount_nbo (const struct TALER_AmountNBO *x); struct GNUNET_PQ_QueryParam TALER_PQ_query_param_amount (const struct TALER_Amount *x); +/** + * Generate query parameter (as record tuple) for an amount, consisting + * of the two components "value" and "fraction" in this order. The + * types must be a 64-bit integer and a 32-bit integer + * respectively. The currency is dropped. + * + * @param db The database context for OID lookup + * @param amount pointer to the query parameter to pass + */ +struct GNUNET_PQ_QueryParam +TALER_PQ_query_param_amount_tuple ( + const struct GNUNET_PQ_Context *db, + const struct TALER_Amount *amount); /** * Generate query parameter for a denomination public @@ -180,6 +193,18 @@ TALER_PQ_result_spec_amount (const char *name, const char *currency, struct TALER_Amount *amount); +/** + * Currency amount expected, from a record-field of (DB) taler_amount type + * + * @param name name of the field in the table + * @param currency currency to use for @a amount + * @param[out] amount where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_PQ_ResultSpec +TALER_PQ_result_spec_amount_tuple (const char *name, + const char *currency, + struct TALER_Amount *amount); /** * Denomination public key expected. -- cgit v1.2.3