commit 0630424c03d64eeee1f9c59ded39f31ac7ad6df2
parent b0779234b53b18bb7d3307b873892c7707ea2712
Author: Bohdan Potuzhnyi <potub1@bfh.ch>
Date: Sat, 5 Oct 2024 11:29:28 +0000
implmenting select_donau_instances
Diffstat:
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