gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-merchant] branch master updated: work on lookup_pending_deposits


From: gnunet
Subject: [taler-merchant] branch master updated: work on lookup_pending_deposits (unfinished)
Date: Sat, 06 Jan 2024 15:50:22 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new f9647f4f work on lookup_pending_deposits (unfinished)
f9647f4f is described below

commit f9647f4f000556909ec1f5b5c3e6872fe2453647
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Jan 6 14:50:19 2024 +0100

    work on lookup_pending_deposits (unfinished)
---
 contrib/wallet-core                        |   2 +-
 src/backenddb/pg_lookup_pending_deposits.c | 139 ++++++++++++++++++++++++++++-
 2 files changed, 138 insertions(+), 3 deletions(-)

diff --git a/contrib/wallet-core b/contrib/wallet-core
index 0c211082..a675c940 160000
--- a/contrib/wallet-core
+++ b/contrib/wallet-core
@@ -1 +1 @@
-Subproject commit 0c211082e0b8372f8fa1cef8102e477c7363d9ba
+Subproject commit a675c94085cfa90052c9ebacd2cebccfab2c4f18
diff --git a/src/backenddb/pg_lookup_pending_deposits.c 
b/src/backenddb/pg_lookup_pending_deposits.c
index 411b7eb5..8f12d5ea 100644
--- a/src/backenddb/pg_lookup_pending_deposits.c
+++ b/src/backenddb/pg_lookup_pending_deposits.c
@@ -26,6 +26,104 @@
 #include "pg_helper.h"
 
 
+/**
+ * Context for lookup_pending_deposits().
+ */
+struct LookupDepositsContext
+{
+  /**
+   * Function to call with the results.
+   */
+  TALER_MERCHANTDB_PendingDepositsCallback cb;
+
+  /**
+   * Closure for @e cb.
+   */
+  void *cb_cls;
+
+  /**
+   * Database context.
+   */
+  struct PostgresClosure *pg;
+
+  /**
+   * Set to the return value on errors.
+   */
+  enum GNUNET_DB_QueryStatus qs;
+
+};
+
+
+/**
+ * Function to be called with the results of a SELECT statement
+ * that has returned @a num_results results about instances.
+ *
+ * @param cls of type `struct LookupDepositsContext *`
+ * @param result the postgres result
+ * @param num_results the number of results in @a result
+ */
+static void
+lookup_deposits_cb (void *cls,
+                    PGresult *result,
+                    unsigned int num_results)
+{
+  struct LookupDepositsContext *ldc = cls;
+
+  for (unsigned int i = 0; i < num_results; i++)
+  {
+    uint64_t deposit_serial;
+    struct GNUNET_TIME_Absolute wire_deadline;
+    struct TALER_PrivateContractHashP h_contract_terms;
+    struct TALER_MerchantPrivateKeyP merchant_priv;
+    char *instance_id;
+    struct TALER_MerchantWireHashP h_wire;
+    struct TALER_Amount amount_with_fee;
+    struct TALER_Amount deposit_fee;
+    struct TALER_CoinSpendPublicKeyP coin_pub;
+    struct GNUNET_PQ_ResultSpec rs[] = {
+      GNUNET_PQ_result_spec_uint64 ("deposit_serial",
+                                    &deposit_serial),
+      GNUNET_PQ_result_spec_auto_from_type ("h_contract_terms",
+                                            &h_contract_terms),
+      GNUNET_PQ_result_spec_auto_from_type ("merchant_priv",
+                                            &merchant_priv),
+      GNUNET_PQ_result_spec_string ("instance_id",
+                                    &instance_id),
+      GNUNET_PQ_result_spec_auto_from_type ("h_wire",
+                                            &h_wire),
+      TALER_PQ_result_spec_amount_with_currency ("amount_with_fee",
+                                                 &amount_with_fee),
+      TALER_PQ_result_spec_amount_with_currency ("deposit_fee",
+                                                 &deposit_fee),
+      GNUNET_PQ_result_spec_auto_from_type ("coin_pub",
+                                            &coin_pub),
+      GNUNET_PQ_result_spec_end
+    };
+
+    if (GNUNET_OK !=
+        GNUNET_PQ_extract_result (result,
+                                  rs,
+                                  i))
+    {
+      GNUNET_break (0);
+      ldc->qs = GNUNET_DB_STATUS_HARD_ERROR;
+      return;
+    }
+    ldc->cb (ldc->cb_cls,
+             deposit_serial,
+             wire_deadline,
+             &h_contract_terms,
+             &merchant_priv,
+             instance_id,
+             &h_wire,
+             &amount_with_fee,
+             &deposit_fee,
+             &coin_pub);
+    GNUNET_PQ_cleanup_result (rs);
+  }
+}
+
+
 enum GNUNET_DB_QueryStatus
 TMH_PG_lookup_pending_deposits (
   void *cls,
@@ -35,6 +133,43 @@ TMH_PG_lookup_pending_deposits (
   TALER_MERCHANTDB_PendingDepositsCallback cb,
   void *cb_cls)
 {
-  GNUNET_break (0);
-  return -2; // FIXME!
+  struct PostgresClosure *pg = cls;
+  struct LookupDepositsContext ldc = {
+    .cb = cb,
+    .cb_cls = cb_cls,
+    .pg = pg
+  };
+  struct GNUNET_TIME_Absolute now
+    = GNUNET_TIME_absolute_get ();
+  struct GNUNET_PQ_QueryParam params[] = {
+    GNUNET_PQ_query_param_string (exchange_url),
+    GNUNET_PQ_query_param_absolute_time (&now),
+    GNUNET_PQ_query_param_uint32 (&limit),
+    GNUNET_PQ_query_param_bool (allow_future),
+    GNUNET_PQ_query_param_end
+  };
+  enum GNUNET_DB_QueryStatus qs;
+
+  check_connection (pg);
+  PREPARE (pg,
+           "lookup_pending_deposits",
+           "SELECT"
+           " deposit_serial"
+           ",h_contract_terms"
+           ",merchant_priv"
+           ",instance_id"
+           ",h_wire"
+           ",amount_with_fee"
+           ",deposit_fee"
+           ",coin_pub"
+           " FROM merchant_deposits"
+           " FIXME");
+  qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
+                                             "lookup_pending_deposits",
+                                             params,
+                                             &lookup_deposits_cb,
+                                             &ldc);
+  if (0 > ldc.qs)
+    return ldc.qs;
+  return qs;
 }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]