commit 6ce847234912a312a5c2dab5ee1d8adddcde45d1
parent 2c5447ad30978dae029396722fb343916a1b6b9d
Author: Christian Grothoff <christian@grothoff.org>
Date: Fri, 26 Dec 2025 15:19:58 +0100
implement select_report
Diffstat:
1 file changed, 64 insertions(+), 0 deletions(-)
diff --git a/src/backenddb/pg_select_report.c b/src/backenddb/pg_select_report.c
@@ -40,4 +40,68 @@ TMH_PG_select_report (void *cls,
enum TALER_ErrorCode *last_error_code,
char **last_error_detail)
{
+ struct PostgresClosure *pg = cls;
+ struct GNUNET_PQ_QueryParam params[] = {
+ GNUNET_PQ_query_param_string (instance_id),
+ GNUNET_PQ_query_param_uint64 (&report_id),
+ GNUNET_PQ_query_param_end
+ };
+ uint32_t code;
+ struct GNUNET_PQ_ResultSpec rs[] = {
+ GNUNET_PQ_result_spec_string ("report_program_section",
+ report_program_section),
+ GNUNET_PQ_result_spec_string ("report_description",
+ report_description),
+ GNUNET_PQ_result_spec_string ("mime_type",
+ mime_type),
+ GNUNET_PQ_result_spec_string ("data_source",
+ data_source),
+ GNUNET_PQ_result_spec_string ("target_address",
+ target_address),
+ GNUNET_PQ_result_spec_relative_time ("frequency",
+ frequency),
+ GNUNET_PQ_result_spec_relative_time ("frequency_shift",
+ frequency_shift),
+ GNUNET_PQ_result_spec_absolute_time ("next_transmission",
+ next_transmission),
+ GNUNET_PQ_result_spec_allow_null (
+ GNUNET_PQ_result_spec_uint32 ("last_error_code",
+ &code),
+ NULL),
+ GNUNET_PQ_result_spec_allow_null (
+ GNUNET_PQ_result_spec_string ("last_error_detail",
+ last_error_detail),
+ NULL),
+ GNUNET_PQ_result_spec_end
+ };
+ enum GNUNET_DB_QueryStatus qs;
+
+ *last_error_detail = NULL;
+ code = TALER_EC_NONE;
+ check_connection (pg);
+ PREPARE (pg,
+ "lookup_reports_pending",
+ "SELECT"
+ " mr.report_program_section"
+ " ,mr.report_description"
+ " ,mr.mime_type"
+ " ,mr.data_source"
+ " ,mr.target_address"
+ " ,mr.frequency"
+ " ,mr.frequency_shift"
+ " ,mr.next_transmission"
+ " ,mr.last_error_code"
+ " ,mr.last_error_details"
+ " FROM merchant_reports mr"
+ " JOIN merchant_instances mi"
+ " USING (merchant_serial)"
+ " WHERE merchant_id=$1"
+ " AND report_serial=$2;");
+ qs = GNUNET_PQ_eval_prepared_singleton_select (
+ pg->conn,
+ "select_report",
+ params,
+ rs);
+ *last_error_code = (enum TALER_ErrorCode) code;
+ return qs;
}