merchant

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

commit 0630424c03d64eeee1f9c59ded39f31ac7ad6df2
parent b0779234b53b18bb7d3307b873892c7707ea2712
Author: Bohdan Potuzhnyi <potub1@bfh.ch>
Date:   Sat,  5 Oct 2024 11:29:28 +0000

implmenting select_donau_instances

Diffstat:
Msrc/backenddb/pg_select_donau_instance.c | 46++++++++++++++++++++++++++++++++++++++++++++++
Msrc/backenddb/pg_select_donau_instance.h | 28++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/src/backenddb/pg_select_donau_instance.c b/src/backenddb/pg_select_donau_instance.c @@ -25,3 +25,48 @@ #include <taler/taler_pq_lib.h> #include "pg_select_donau_instance.h" #include "pg_helper.h" + +enum GNUNET_DB_QueryStatus +TMH_PG_select_donau_instances (void *cls, + struct TALER_MERCHANTDB_DonauInstance *di) +{ + struct PostgresClosure *pg = cls; + struct GNUNET_PQ_QueryParam params[] = { + GNUNET_PQ_query_param_end + }; + + struct GNUNET_PQ_ResultSpec rs[] = { + GNUNET_PQ_result_spec_auto_from_type ("donau_url", &di->donau_url), + GNUNET_PQ_result_spec_auto_from_type ("charity_name", &di->charity_name), + GNUNET_PQ_result_spec_auto_from_type ("charity_pub_key", &di->charity_pub_key), + GNUNET_PQ_result_spec_uint64 ("charity_id", &di->charity_id), + TALER_PQ_result_spec_amount_with_currency ("charity_max_per_year", &di->charity_max_per_year), + TALER_PQ_result_spec_amount_with_currency ("charity_receipts_to_date", &di->charity_receipts_to_date), + GNUNET_PQ_result_spec_int64 ("current_year", &di->current_year), + TALER_PQ_result_spec_json ("keys_json", &di->donau_keys_json), + GNUNET_PQ_result_spec_end + }; + + check_connection (pg); + + PREPARE (pg, + "select_donau_instance", + "SELECT" + " di.donau_url" + ",di.charity_name" + ",di.charity_pub_key" + ",di.charity_id" + ",di.charity_max_per_year" + ",di.charity_receipts_to_date" + ",di.current_year" + ",dk.keys_json" + " FROM merchant_donau_instances di" + " JOIN merchant_donau_keys dk" + " ON di.donau_url = dk.donau_url" + " WHERE di.donau_url=$1"); + + return GNUNET_PQ_eval_prepared_singleton_select (pg->conn, + "select_donau_instance", + params, + rs); +} +\ No newline at end of file diff --git a/src/backenddb/pg_select_donau_instance.h b/src/backenddb/pg_select_donau_instance.h @@ -26,4 +26,32 @@ #include <taler/taler_json_lib.h> #include "taler_merchantdb_plugin.h" +/** + * Structure to hold Donau instance details from the database. + */ +struct TALER_MERCHANTDB_DonauInstance +{ + const char *donau_url; + const char *charity_name; + const DONAU_CharityPublicKeyP *charity_pub_key; + uint64_t charity_id; + struct TALER_Amount charity_max_per_year; + struct TALER_Amount charity_receipts_to_date; + int64_t current_year; + json_t *donau_keys_json; // Added the keys_json field here +}; + +/** + * Retrieve details of a Donau instance. + * + * @param cls closure (database connection or context) + * @param donau_url URL of the Donau instance to query + * @param[out] di structure to populate with instance details + * @return database result code + */ +enum GNUNET_DB_QueryStatus +TMH_PG_select_donau_instance ( + void *cls, + struct TALER_MERCHANTDB_DonauInstance *di); + #endif