From 5c01da52b1309607311b0b2e608e5de3a77b7ffe Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 12 Jun 2015 21:29:17 +0200 Subject: introduce pq functions form abs time in NBO --- src/include/taler_pq_lib.h | 22 ++++++++++++++++++++++ src/mintdb/plugin_mintdb_postgres.c | 24 ++++++++++++------------ src/pq/pq_helper.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h index 9159cc0f7..2fe66c52f 100644 --- a/src/include/taler_pq_lib.h +++ b/src/include/taler_pq_lib.h @@ -201,6 +201,16 @@ struct TALER_PQ_QueryParam TALER_PQ_query_param_absolute_time(const struct GNUNET_TIME_Absolute *x); +/** + * Generate query parameter for an absolute time value. + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct TALER_PQ_QueryParam +TALER_PQ_query_param_absolute_time_nbo(const struct GNUNET_TIME_AbsoluteNBO *x); + + /** * Generate query parameter for an uint16_t in host byte order. * @@ -452,6 +462,18 @@ TALER_PQ_result_spec_absolute_time (const char *name, struct GNUNET_TIME_Absolute *at); +/** + * Absolute time expected. + * + * @param name name of the field in the table + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct TALER_PQ_ResultSpec +TALER_PQ_result_spec_absolute_time_nbo (const char *name, + struct GNUNET_TIME_AbsoluteNBO *at); + + /** * uint16_t expected. * diff --git a/src/mintdb/plugin_mintdb_postgres.c b/src/mintdb/plugin_mintdb_postgres.c index 00c515e1f..c222d1c37 100644 --- a/src/mintdb/plugin_mintdb_postgres.c +++ b/src/mintdb/plugin_mintdb_postgres.c @@ -1057,10 +1057,10 @@ postgres_insert_denomination_info (void *cls, TALER_PQ_query_param_rsa_public_key (denom_pub->rsa_public_key), TALER_PQ_query_param_auto_from_type (&issue->master), TALER_PQ_query_param_auto_from_type (&issue->signature), - TALER_PQ_query_param_auto_from_type (&issue->start.abs_value_us__), - TALER_PQ_query_param_auto_from_type (&issue->expire_withdraw.abs_value_us__), - TALER_PQ_query_param_auto_from_type (&issue->expire_spend.abs_value_us__), - TALER_PQ_query_param_auto_from_type (&issue->expire_legal.abs_value_us__), + TALER_PQ_query_param_absolute_time_nbo (&issue->start), + TALER_PQ_query_param_absolute_time_nbo (&issue->expire_withdraw), + TALER_PQ_query_param_absolute_time_nbo (&issue->expire_spend), + TALER_PQ_query_param_absolute_time_nbo (&issue->expire_legal), TALER_PQ_query_param_amount_nbo (&issue->value), TALER_PQ_query_param_amount_nbo (&issue->fee_withdraw), TALER_PQ_query_param_amount_nbo (&issue->fee_deposit), @@ -1147,14 +1147,14 @@ postgres_get_denomination_info (void *cls, &issue->master), TALER_PQ_result_spec_auto_from_type ("master_sig", &issue->signature), - TALER_PQ_result_spec_auto_from_type ("valid_from", - &issue->start.abs_value_us__), - TALER_PQ_result_spec_auto_from_type ("expire_withdraw", - &issue->expire_withdraw.abs_value_us__), - TALER_PQ_result_spec_auto_from_type ("expire_spend", - &issue->expire_spend.abs_value_us__), - TALER_PQ_result_spec_auto_from_type ("expire_legal", - &issue->expire_legal.abs_value_us__), + TALER_PQ_result_spec_absolute_time_nbo ("valid_from", + &issue->start), + TALER_PQ_result_spec_absolute_time_nbo ("expire_withdraw", + &issue->expire_withdraw), + TALER_PQ_result_spec_absolute_time_nbo ("expire_spend", + &issue->expire_spend), + TALER_PQ_result_spec_absolute_time_nbo ("expire_legal", + &issue->expire_legal), TALER_PQ_result_spec_amount_nbo ("coin", &issue->value), TALER_PQ_result_spec_amount_nbo ("fee_withdraw", diff --git a/src/pq/pq_helper.c b/src/pq/pq_helper.c index 8fd7e207b..bd54447e7 100644 --- a/src/pq/pq_helper.c +++ b/src/pq/pq_helper.c @@ -107,6 +107,21 @@ TALER_PQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x) } +/** + * Generate query parameter for an absolute time value. + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct TALER_PQ_QueryParam +TALER_PQ_query_param_absolute_time_nbo(const struct GNUNET_TIME_AbsoluteNBO *x) +{ + struct TALER_PQ_QueryParam res = + TALER_PQ_query_param_auto_from_type (&x->abs_value_us__); + return res; +} + + /** * Generate query parameter for an uint16_t in host byte order. * @@ -268,6 +283,23 @@ TALER_PQ_result_spec_absolute_time (const char *name, } +/** + * Absolute time expected. + * + * @param name name of the field in the table + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct TALER_PQ_ResultSpec +TALER_PQ_result_spec_absolute_time_nbo (const char *name, + struct GNUNET_TIME_AbsoluteNBO *at) +{ + struct TALER_PQ_ResultSpec res = + TALER_PQ_result_spec_auto_from_type(name, &at->abs_value_us__); + return res; +} + + /** * uint16_t expected. * -- cgit v1.2.3