From 1a1fafbd438f3f21a15c990d904e192b045d2391 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 14 Dec 2021 16:04:32 +0100 Subject: introducing GNUNET_TIME_Timestamp, recoup now with amounts --- src/pq/pq_query_helper.c | 119 --------------------------------------- src/pq/pq_result_helper.c | 140 ---------------------------------------------- 2 files changed, 259 deletions(-) (limited to 'src/pq') diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c index 78c8af979..37d7bf5be 100644 --- a/src/pq/pq_query_helper.c +++ b/src/pq/pq_query_helper.c @@ -474,123 +474,4 @@ TALER_PQ_query_param_json (const json_t *x) } -/** - * Function called to convert input argument into SQL parameters. - * - * @param cls closure - * @param data pointer to input argument - * @param data_len number of bytes in @a data (if applicable) - * @param[out] param_values SQL data to set - * @param[out] param_lengths SQL length data to set - * @param[out] param_formats SQL format data to set - * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays - * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc() - * @param scratch_length number of entries left in @a scratch - * @return -1 on error, number of offsets used in @a scratch otherwise - */ -static int -qconv_round_time (void *cls, - const void *data, - size_t data_len, - void *param_values[], - int param_lengths[], - int param_formats[], - unsigned int param_length, - void *scratch[], - unsigned int scratch_length) -{ - const struct GNUNET_TIME_Absolute *at = data; - struct GNUNET_TIME_Absolute tmp; - struct GNUNET_TIME_AbsoluteNBO *buf; - - (void) cls; - GNUNET_assert (1 == param_length); - GNUNET_assert (sizeof (struct GNUNET_TIME_AbsoluteNBO) == data_len); - GNUNET_assert (scratch_length > 0); - GNUNET_break (NULL == cls); - tmp = *at; - GNUNET_assert (GNUNET_OK == - GNUNET_TIME_round_abs (&tmp)); - buf = GNUNET_new (struct GNUNET_TIME_AbsoluteNBO); - *buf = GNUNET_TIME_absolute_hton (tmp); - scratch[0] = buf; - param_values[0] = (void *) buf; - param_lengths[0] = sizeof (struct GNUNET_TIME_AbsoluteNBO); - param_formats[0] = 1; - return 1; -} - - -struct GNUNET_PQ_QueryParam -TALER_PQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x) -{ - struct GNUNET_PQ_QueryParam res = { - .conv = &qconv_round_time, - .data = x, - .size = sizeof (*x), - .num_params = 1 - }; - - return res; -} - - -/** - * Function called to convert input argument into SQL parameters. - * - * @param cls closure - * @param data pointer to input argument - * @param data_len number of bytes in @a data (if applicable) - * @param[out] param_values SQL data to set - * @param[out] param_lengths SQL length data to set - * @param[out] param_formats SQL format data to set - * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays - * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc() - * @param scratch_length number of entries left in @a scratch - * @return -1 on error, number of offsets used in @a scratch otherwise - */ -static int -qconv_round_time_abs (void *cls, - const void *data, - size_t data_len, - void *param_values[], - int param_lengths[], - int param_formats[], - unsigned int param_length, - void *scratch[], - unsigned int scratch_length) -{ - const struct GNUNET_TIME_AbsoluteNBO *at = data; - struct GNUNET_TIME_Absolute tmp; - - (void) cls; - (void) scratch; - (void) scratch_length; - GNUNET_assert (1 == param_length); - GNUNET_assert (sizeof (struct GNUNET_TIME_AbsoluteNBO) == data_len); - GNUNET_break (NULL == cls); - tmp = GNUNET_TIME_absolute_ntoh (*at); - GNUNET_assert (GNUNET_OK == - GNUNET_TIME_round_abs (&tmp)); - param_values[0] = (void *) at; - param_lengths[0] = sizeof (struct GNUNET_TIME_AbsoluteNBO); - param_formats[0] = 1; - return 0; -} - - -struct GNUNET_PQ_QueryParam -TALER_PQ_query_param_absolute_time_nbo (const struct GNUNET_TIME_AbsoluteNBO *x) -{ - struct GNUNET_PQ_QueryParam res = { - .conv = &qconv_round_time_abs, - .data = x, - .size = sizeof (*x), - .num_params = 1 - }; - - return res; -} - - /* end of pq/pq_query_helper.c */ diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c index 8c9f817b0..a6bc9409a 100644 --- a/src/pq/pq_result_helper.c +++ b/src/pq/pq_result_helper.c @@ -352,146 +352,6 @@ TALER_PQ_result_spec_json (const char *name, } -/** - * Extract data from a Postgres database @a result at row @a row. - * - * @param cls closure - * @param result where to extract data from - * @param row the row to extract data from - * @param fname name (or prefix) of the fields to extract from - * @param[in,out] dst_size where to store size of result, may be NULL - * @param[out] dst where to store the result - * @return - * #GNUNET_YES if all results could be extracted - * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) - */ -static enum GNUNET_GenericReturnValue -extract_round_time (void *cls, - PGresult *result, - int row, - const char *fname, - size_t *dst_size, - void *dst) -{ - struct GNUNET_TIME_Absolute *udst = dst; - const struct GNUNET_TIME_AbsoluteNBO *res; - struct GNUNET_TIME_Absolute tmp; - int fnum; - - (void) cls; - fnum = PQfnumber (result, - fname); - if (fnum < 0) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - if (PQgetisnull (result, - row, - fnum)) - return GNUNET_NO; - GNUNET_assert (NULL != dst); - if (sizeof (struct GNUNET_TIME_Absolute) != *dst_size) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - res = (struct GNUNET_TIME_AbsoluteNBO *) PQgetvalue (result, - row, - fnum); - tmp = GNUNET_TIME_absolute_ntoh (*res); - GNUNET_break (GNUNET_OK == - GNUNET_TIME_round_abs (&tmp)); - *udst = tmp; - return GNUNET_OK; -} - - -struct GNUNET_PQ_ResultSpec -TALER_PQ_result_spec_absolute_time (const char *name, - struct GNUNET_TIME_Absolute *at) -{ - struct GNUNET_PQ_ResultSpec res = { - .conv = &extract_round_time, - .dst = (void *) at, - .dst_size = sizeof (struct GNUNET_TIME_Absolute), - .fname = name - }; - - return res; -} - - -/** - * Extract data from a Postgres database @a result at row @a row. - * - * @param cls closure - * @param result where to extract data from - * @param row the row to extract data from - * @param fname name (or prefix) of the fields to extract from - * @param[in,out] dst_size where to store size of result, may be NULL - * @param[out] dst where to store the result - * @return - * #GNUNET_YES if all results could be extracted - * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) - */ -static enum GNUNET_GenericReturnValue -extract_round_time_nbo (void *cls, - PGresult *result, - int row, - const char *fname, - size_t *dst_size, - void *dst) -{ - struct GNUNET_TIME_AbsoluteNBO *udst = dst; - const struct GNUNET_TIME_AbsoluteNBO *res; - struct GNUNET_TIME_Absolute tmp; - int fnum; - - (void) cls; - fnum = PQfnumber (result, - fname); - if (fnum < 0) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - if (PQgetisnull (result, - row, - fnum)) - return GNUNET_NO; - GNUNET_assert (NULL != dst); - if (sizeof (struct GNUNET_TIME_AbsoluteNBO) != *dst_size) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - res = (struct GNUNET_TIME_AbsoluteNBO *) PQgetvalue (result, - row, - fnum); - tmp = GNUNET_TIME_absolute_ntoh (*res); - GNUNET_break (GNUNET_OK == - GNUNET_TIME_round_abs (&tmp)); - *udst = GNUNET_TIME_absolute_hton (tmp); - return GNUNET_OK; -} - - -struct GNUNET_PQ_ResultSpec -TALER_PQ_result_spec_absolute_time_nbo (const char *name, - struct GNUNET_TIME_AbsoluteNBO *at) -{ - struct GNUNET_PQ_ResultSpec res = { - .conv = &extract_round_time_nbo, - .dst = (void *) at, - .dst_size = sizeof (struct GNUNET_TIME_AbsoluteNBO), - .fname = name - }; - - return res; -} - - /** * Extract data from a Postgres database @a result at row @a row. * -- cgit v1.2.3