summaryrefslogtreecommitdiff
path: root/src/auditordb/pg_get_deposit_confirmations.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/auditordb/pg_get_deposit_confirmations.c')
-rw-r--r--src/auditordb/pg_get_deposit_confirmations.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/auditordb/pg_get_deposit_confirmations.c b/src/auditordb/pg_get_deposit_confirmations.c
index e5158a69d..de9817919 100644
--- a/src/auditordb/pg_get_deposit_confirmations.c
+++ b/src/auditordb/pg_get_deposit_confirmations.c
@@ -154,15 +154,20 @@ deposit_confirmation_cb (void *cls,
enum GNUNET_DB_QueryStatus
TAH_PG_get_deposit_confirmations (
void *cls,
- uint64_t start_id,
+ int64_t limit,
+ uint64_t offset,
bool return_suppressed,
TALER_AUDITORDB_DepositConfirmationCallback cb,
void *cb_cls)
{
+
+ uint64_t plimit = (uint64_t) ((limit < 0) ? -limit : limit);
+
struct PostgresClosure *pg = cls;
struct GNUNET_PQ_QueryParam params[] = {
- GNUNET_PQ_query_param_uint64 (&start_id),
+ GNUNET_PQ_query_param_uint64 (&offset),
GNUNET_PQ_query_param_bool (return_suppressed),
+ GNUNET_PQ_query_param_uint64 (&plimit),
GNUNET_PQ_query_param_end
};
struct DepositConfirmationContext dcc = {
@@ -173,7 +178,30 @@ TAH_PG_get_deposit_confirmations (
enum GNUNET_DB_QueryStatus qs;
PREPARE (pg,
- "auditor_deposit_confirmation_select",
+ "auditor_deposit_confirmation_select_desc",
+ "SELECT"
+ " deposit_confirmation_serial_id"
+ ",h_contract_terms"
+ ",h_policy"
+ ",h_wire"
+ ",exchange_timestamp"
+ ",wire_deadline"
+ ",refund_deadline"
+ ",total_without_fee"
+ ",coin_pubs"
+ ",coin_sigs"
+ ",merchant_pub"
+ ",exchange_sig"
+ ",exchange_pub"
+ ",master_sig"
+ " FROM auditor_deposit_confirmations"
+ " WHERE (deposit_confirmation_serial_id < $1)"
+ " AND ($2 OR suppressed is false)"
+ " ORDER BY deposit_confirmation_serial_id DESC"
+ " LIMIT $3"
+ );
+ PREPARE (pg,
+ "auditor_deposit_confirmation_select_asc",
"SELECT"
" deposit_confirmation_serial_id"
",h_contract_terms"
@@ -190,10 +218,16 @@ TAH_PG_get_deposit_confirmations (
",exchange_pub"
",master_sig"
" FROM auditor_deposit_confirmations"
- " WHERE deposit_confirmation_serial_id>$1"
- " AND ($2 OR NOT suppressed);");
+ " WHERE (deposit_confirmation_serial_id > $1)"
+ " AND ($2 OR suppressed is false)"
+ " ORDER BY deposit_confirmation_serial_id ASC"
+ " LIMIT $3"
+ );
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
- "auditor_deposit_confirmation_select",
+ (limit > 0) ?
+ "auditor_deposit_confirmation_select_asc"
+ :
+ "auditor_deposit_confirmation_select_desc",
params,
&deposit_confirmation_cb,
&dcc);