implementing #3813 and 3834

This commit is contained in:
Christian Grothoff 2015-06-11 16:21:40 +02:00
parent e789fc36b4
commit 9f1a208745

View File

@ -679,8 +679,22 @@ postgres_prepare (PGconn *db_conn)
" FROM refresh_melts" " FROM refresh_melts"
" WHERE session=$1 AND oldcoin_index=$2", " WHERE session=$1 AND oldcoin_index=$2",
2, NULL); 2, NULL);
/* FIXME: should have a way to query the 'refresh_melts' by /* Query the 'refresh_melts' by coin public key */
coin public key (#3813) */ PREPARE ("get_refresh_melt_by_coin",
"SELECT"
" session"
/* ",oldcoin_index" // not needed */
",coin_sig"
",amount_with_fee_val"
",amount_with_fee_frac"
",amount_with_fee_curr"
",melt_fee_val "
",melt_fee_frac "
",melt_fee_curr "
" FROM refresh_melts"
" WHERE coin_pub=$1",
1, NULL);
/* FIXME: 'get_refresh_out' is not used anywhere! /* FIXME: 'get_refresh_out' is not used anywhere!
Should be needed for /refresh/link at least. */ Should be needed for /refresh/link at least. */
PREPARE ("get_refresh_out", PREPARE ("get_refresh_out",
@ -2923,10 +2937,61 @@ postgres_get_coin_transactions (void *cls,
} }
/* Handle refreshing */ /* Handle refreshing */
{ {
/* FIXME: #3834 */ struct TALER_PQ_QueryParam params[] = {
TALER_PQ_query_param_auto_from_type (&coin_pub->eddsa_pub),
TALER_PQ_query_param_end
};
int nrows;
int i;
PGresult *result;
struct TALER_MINTDB_TransactionList *tl;
/* check if the melt record exists and get it */
result = TALER_PQ_exec_prepared (session->conn,
"get_refresh_melt_by_coin",
params);
if (PGRES_TUPLES_OK != PQresultStatus (result))
{
BREAK_DB_ERR (result);
PQclear (result);
goto cleanup;
}
nrows = PQntuples (result);
for (i=0;i<nrows;i++)
{
struct TALER_MINTDB_RefreshMelt *melt;
melt = GNUNET_new (struct TALER_MINTDB_RefreshMelt);
{
struct TALER_PQ_ResultSpec rs[] = {
TALER_PQ_result_spec_auto_from_type ("session",
&melt->session_hash),
/* oldcoin_index not needed */
TALER_PQ_result_spec_auto_from_type ("coin_sig",
&melt->coin_sig),
TALER_PQ_result_spec_amount ("amount_with_fee",
&melt->amount_with_fee),
TALER_PQ_result_spec_amount ("amount_with_fee",
&melt->melt_fee),
TALER_PQ_result_spec_end
};
if (GNUNET_OK !=
TALER_PQ_extract_result (result, rs, 0))
{
GNUNET_break (0);
GNUNET_free (melt);
goto cleanup;
}
}
tl = GNUNET_new (struct TALER_MINTDB_TransactionList);
tl->next = head;
tl->type = TALER_MINTDB_TT_REFRESH_MELT;
tl->details.melt = melt;
head = tl;
continue;
}
} }
/* FIXME: support fetching information about locked coins /* FIXME: Handle locked coins (#3625) */
(locking is not implemented as of now, #3625) */
return head; return head;
cleanup: cleanup:
if (NULL != head) if (NULL != head)