diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2018-12-14 19:00:37 +0100 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2018-12-14 19:00:37 +0100 |
commit | d52b2b0c7ff423ba84f94f53affd6ec793469807 (patch) | |
tree | b02db82fb65c57b951b2ae7879be226563ae0032 /src/backenddb | |
parent | 5cab5dc7b7a8dac374bb17108a041ac41d2bb4a9 (diff) | |
download | merchant-d52b2b0c7ff423ba84f94f53affd6ec793469807.tar.gz merchant-d52b2b0c7ff423ba84f94f53affd6ec793469807.tar.bz2 merchant-d52b2b0c7ff423ba84f94f53affd6ec793469807.zip |
/history API mod.
Provide option to return results in ascending order.
Diffstat (limited to 'src/backenddb')
-rw-r--r-- | src/backenddb/plugin_merchantdb_postgres.c | 42 | ||||
-rw-r--r-- | src/backenddb/test_merchantdb.c | 2 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c index 5fd07d0a..beeeb4eb 100644 --- a/src/backenddb/plugin_merchantdb_postgres.c +++ b/src/backenddb/plugin_merchantdb_postgres.c @@ -434,6 +434,22 @@ postgres_initialize (void *cls) " WHERE merchant_pub=$1" " AND h_contract_terms=$2", 2), + + GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range_asc", + "SELECT" + " contract_terms" + ",order_id" + ",row_id" + " FROM merchant_contract_terms" + " WHERE" + " timestamp>$1" + " AND merchant_pub=$2" + " AND row_id>$3" + " AND paid=TRUE" + " ORDER BY row_id ASC, timestamp ASC" + " LIMIT $4", + 4), + GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range", "SELECT" " contract_terms" @@ -448,6 +464,21 @@ postgres_initialize (void *cls) " ORDER BY row_id DESC, timestamp DESC" " LIMIT $4", 4), + + GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range_past_asc", + "SELECT" + " contract_terms" + ",order_id" + ",row_id" + " FROM merchant_contract_terms" + " WHERE" + " timestamp<$1" + " AND merchant_pub=$2" + " AND row_id<$3" + " AND paid=TRUE" + " ORDER BY row_id ASC, timestamp ASC" + " LIMIT $4", + 4), GNUNET_PQ_make_prepare ("find_contract_terms_by_date_and_range_past", "SELECT" " contract_terms" @@ -1365,6 +1396,7 @@ find_contracts_cb (void *cls, * the same timestamp and just go behind in history by tuning `start`. * @param nrows only nrows rows are returned. * @param past if set to #GNUNET_YES, retrieves rows older than `date`. + * @param ascending if GNUNET_YES, results will be sorted in chronological order. * This is tipically used to show live updates on the merchant's backoffice * Web interface. * @param cb function to call with transaction data, can be NULL. @@ -1378,6 +1410,7 @@ postgres_find_contract_terms_by_date_and_range (void *cls, uint64_t start, uint64_t nrows, int past, + unsigned int ascending, TALER_MERCHANTDB_ProposalDataCallback cb, void *cb_cls) { @@ -1398,10 +1431,15 @@ postgres_find_contract_terms_by_date_and_range (void *cls, GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "DB serving /history with date %s\n", GNUNET_STRINGS_absolute_time_to_string (date)); - if (GNUNET_YES == past) + if ((GNUNET_YES == past) && (GNUNET_YES == ascending)) + stmt = "find_contract_terms_by_date_and_range_past_asc"; + else if ((GNUNET_YES == past) && (GNUNET_NO == ascending)) stmt = "find_contract_terms_by_date_and_range_past"; - else + + else if ((GNUNET_NO == past) && (GNUNET_NO == ascending)) stmt = "find_contract_terms_by_date_and_range"; + else + stmt = "find_contract_terms_by_date_and_range_asc"; check_connection (pg); qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn, stmt, diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c index d60d1e9f..aa3db96a 100644 --- a/src/backenddb/test_merchantdb.c +++ b/src/backenddb/test_merchantdb.c @@ -905,6 +905,7 @@ run (void *cls) 2, 1, GNUNET_YES, + GNUNET_NO, &pd_cb, NULL)); timestamp = GNUNET_TIME_absolute_get (); @@ -935,6 +936,7 @@ run (void *cls) 0, 5, GNUNET_NO, + GNUNET_NO, &pd_cb, NULL)); |