implement iterate_denomination_info() call
This commit is contained in:
parent
079207a426
commit
1a542148a6
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
Copyright (C) 2014, 2015, 2016, 2017, 2018 GNUnet e.V.
|
Copyright (C) 2014--2019 GNUnet e.V.
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
TALER is free software; you can redistribute it and/or modify it under the
|
||||||
terms of the GNU General Public License as published by the Free Software
|
terms of the GNU General Public License as published by the Free Software
|
||||||
@ -547,6 +547,33 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
" $11, $12, $13, $14, $15, $16, $17, $18,"
|
" $11, $12, $13, $14, $15, $16, $17, $18,"
|
||||||
" $19, $20, $21, $22, $23);",
|
" $19, $20, $21, $22, $23);",
|
||||||
23),
|
23),
|
||||||
|
/* Used in #postgres_iterate_denomination_info() */
|
||||||
|
GNUNET_PQ_make_prepare ("denomination_iterate",
|
||||||
|
"SELECT"
|
||||||
|
" master_pub"
|
||||||
|
",master_sig"
|
||||||
|
",valid_from"
|
||||||
|
",expire_withdraw"
|
||||||
|
",expire_deposit"
|
||||||
|
",expire_legal"
|
||||||
|
",coin_val" /* value of this denom */
|
||||||
|
",coin_frac" /* fractional value of this denom */
|
||||||
|
",coin_curr" /* assuming same currency for fees */
|
||||||
|
",fee_withdraw_val"
|
||||||
|
",fee_withdraw_frac"
|
||||||
|
",fee_withdraw_curr" /* must match coin_curr */
|
||||||
|
",fee_deposit_val"
|
||||||
|
",fee_deposit_frac"
|
||||||
|
",fee_deposit_curr" /* must match coin_curr */
|
||||||
|
",fee_refresh_val"
|
||||||
|
",fee_refresh_frac"
|
||||||
|
",fee_refresh_curr" /* must match coin_curr */
|
||||||
|
",fee_refund_val"
|
||||||
|
",fee_refund_frac"
|
||||||
|
",fee_refund_curr" /* must match coin_curr */
|
||||||
|
",denom_pub"
|
||||||
|
" FROM denominations;",
|
||||||
|
0),
|
||||||
/* Used in #postgres_get_denomination_info() */
|
/* Used in #postgres_get_denomination_info() */
|
||||||
GNUNET_PQ_make_prepare ("denomination_get",
|
GNUNET_PQ_make_prepare ("denomination_get",
|
||||||
"SELECT"
|
"SELECT"
|
||||||
@ -1980,6 +2007,82 @@ postgres_get_denomination_info (void *cls,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct DenomIteratorContext
|
||||||
|
{
|
||||||
|
TALER_EXCHANGEDB_DenominationInfoIterator cb;
|
||||||
|
void *cb_cls;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function for #postgres_iterate_denomination_info().
|
||||||
|
* Calls the callback with each denomination key.
|
||||||
|
*
|
||||||
|
* @param cls a `struct DenomIteratorContext`
|
||||||
|
* @param result db results
|
||||||
|
* @param num_results number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
domination_cb_helper (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct DenomIteratorContext *dic = cls;
|
||||||
|
|
||||||
|
for (unsigned int i=0;i<num_results;i++)
|
||||||
|
{
|
||||||
|
struct TALER_EXCHANGEDB_DenominationKeyInformationP issue;
|
||||||
|
struct TALER_DenominationPublicKey denom_pub;
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type ("master_pub",
|
||||||
|
&issue.properties.master),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type ("master_sig",
|
||||||
|
&issue.signature),
|
||||||
|
TALER_PQ_result_spec_absolute_time_nbo ("valid_from",
|
||||||
|
&issue.properties.start),
|
||||||
|
TALER_PQ_result_spec_absolute_time_nbo ("expire_withdraw",
|
||||||
|
&issue.properties.expire_withdraw),
|
||||||
|
TALER_PQ_result_spec_absolute_time_nbo ("expire_deposit",
|
||||||
|
&issue.properties.expire_deposit),
|
||||||
|
TALER_PQ_result_spec_absolute_time_nbo ("expire_legal",
|
||||||
|
&issue.properties.expire_legal),
|
||||||
|
TALER_PQ_result_spec_amount_nbo ("coin",
|
||||||
|
&issue.properties.value),
|
||||||
|
TALER_PQ_result_spec_amount_nbo ("fee_withdraw",
|
||||||
|
&issue.properties.fee_withdraw),
|
||||||
|
TALER_PQ_result_spec_amount_nbo ("fee_deposit",
|
||||||
|
&issue.properties.fee_deposit),
|
||||||
|
TALER_PQ_result_spec_amount_nbo ("fee_refresh",
|
||||||
|
&issue.properties.fee_refresh),
|
||||||
|
TALER_PQ_result_spec_amount_nbo ("fee_refund",
|
||||||
|
&issue.properties.fee_refund),
|
||||||
|
GNUNET_PQ_result_spec_rsa_public_key ("denom_pub",
|
||||||
|
&denom_pub.rsa_public_key),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
issue.properties.purpose.size
|
||||||
|
= htonl (sizeof (struct TALER_DenominationKeyValidityPS));
|
||||||
|
issue.properties.purpose.purpose
|
||||||
|
= htonl (TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY);
|
||||||
|
GNUNET_CRYPTO_rsa_public_key_hash (denom_pub.rsa_public_key,
|
||||||
|
&issue.properties.denom_hash);
|
||||||
|
dic->cb (dic->cb_cls,
|
||||||
|
&denom_pub,
|
||||||
|
&issue);
|
||||||
|
GNUNET_CRYPTO_rsa_public_key_free (denom_pub.rsa_public_key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch information about all known denomination keys.
|
* Fetch information about all known denomination keys.
|
||||||
*
|
*
|
||||||
@ -1993,15 +2096,20 @@ postgres_iterate_denomination_info (void *cls,
|
|||||||
TALER_EXCHANGEDB_DenominationInfoIterator cb,
|
TALER_EXCHANGEDB_DenominationInfoIterator cb,
|
||||||
void *cb_cls)
|
void *cb_cls)
|
||||||
{
|
{
|
||||||
#if 0
|
struct PostgresClosure *pc = cls;
|
||||||
enum GNUNET_DB_QueryStatus qs;
|
|
||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
#endif
|
struct DenomIteratorContext dic = {
|
||||||
|
.cb = cb,
|
||||||
|
.cb_cls = cb_cls
|
||||||
|
};
|
||||||
|
|
||||||
GNUNET_break (0); // not implemented! #5536
|
return GNUNET_PQ_eval_prepared_multi_select (postgres_get_session (pc)->conn,
|
||||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
"denomination_iterate",
|
||||||
|
params,
|
||||||
|
&domination_cb_helper,
|
||||||
|
&dic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user