diff options
Diffstat (limited to 'src/auditordb/pg_get_deposit_confirmations.c')
-rw-r--r-- | src/auditordb/pg_get_deposit_confirmations.c | 46 |
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); |