db: Use a reserve structure

This commit is contained in:
Sree Harsha Totakura 2015-03-05 16:31:33 +01:00
parent 363773698a
commit 39c538311d
2 changed files with 39 additions and 17 deletions

View File

@ -852,25 +852,27 @@ TALER_MINT_DB_commit (PGconn *db_conn)
* Get the summary of a reserve.
*
* @param db the database connection handle
* @param reserve_pub the public key identifying the reserve
* @param balance the amount existing in the reserve (will be filled)
* @param expiry expiration of the reserve (will be filled)
* @return #GNUNET_OK upon success; #GNUNET_NO when the given reserve is not
* found; #GNUNET_SYSERR upon failure
* @param reserve the reserve data. The public key of the reserve should be set
* in this structure; it is used to query the database. The balance
* and expiration are then filled accordingly.
* @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure
*/
int
TALER_MINT_DB_reserve_get (PGconn *db,
struct GNUNET_CRYPTO_EddsaPublicKey *reserve_pub,
struct TALER_Amount *balance,
struct GNUNET_TIME_Absolute *expiry)
struct Reserve *reserve)
{
PGresult *result;
uint64_t expiration_date_nbo;
struct TALER_DB_QueryParam params[] = {
TALER_DB_QUERY_PARAM_PTR(reserve_pub),
TALER_DB_QUERY_PARAM_PTR(reserve->pub),
TALER_DB_QUERY_PARAM_END
};
if (NULL == reserve->pub)
{
GNUNET_break (0);
return GNUNET_SYSERR;
}
result = TALER_DB_exec_prepared (db,
"get_reserve",
params);
@ -897,8 +899,8 @@ TALER_MINT_DB_reserve_get (PGconn *db,
"current_balance_value",
"current_balance_fraction",
"current_balance_currency",
balance));
expiry->abs_value_us = GNUNET_ntohll (expiration_date_nbo);
&reserve->balance));
reserve->expiry.abs_value_us = GNUNET_ntohll (expiration_date_nbo);
PQclear (result);
return GNUNET_OK;

View File

@ -137,6 +137,27 @@ struct BankTransfer
/* FIXME: add functions to add bank transfers to our DB
(and to test if we already did add one) (#3633) */
/**
* A summary of a Reserve
*/
struct Reserve
{
/**
* The reserve's public key. This uniquely identifies the reserve
*/
struct GNUNET_CRYPTO_EddsaPublicKey *pub;
/**
* The balance amount existing in the reserve
*/
struct TALER_Amount balance;
/**
* The expiration date of this reserve
*/
struct GNUNET_TIME_Absolute expiry;
};
/**
* Information we keep for a withdrawn coin to reproduce
@ -173,16 +194,15 @@ struct CollectableBlindcoin
* Get the summary of a reserve.
*
* @param db the database connection handle
* @param reserve_pub the public key identifying the reserve
* @param balance the amount existing in the reserve (will be filled)
* @param expiry expiration of the reserve (will be filled)
* @param reserve the reserve data. The public key of the reserve should be set
* in this structure; it is used to query the database. The balance
* and expiration are then filled accordingly.
* @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure
*/
int
TALER_MINT_DB_reserve_get (PGconn *db,
struct GNUNET_CRYPTO_EddsaPublicKey *reserve_pub,
struct TALER_Amount *balance,
struct GNUNET_TIME_Absolute *expiry);
struct Reserve *reserve);
/* FIXME: need call to convert CollectableBlindcoin to JSON (#3527) */