gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 43/130: address most FIXMEs in pg plugin


From: gnunet
Subject: [taler-exchange] 43/130: address most FIXMEs in pg plugin
Date: Wed, 17 Nov 2021 12:24:51 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

commit 9968a34a1dd7fb22ebe3a334857d8c33d6889a4a
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Oct 29 11:28:12 2021 +0200

    address most FIXMEs in pg plugin
---
 src/exchangedb/plugin_exchangedb_postgres.c | 127 +++++++++++++++-------------
 1 file changed, 69 insertions(+), 58 deletions(-)

diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index b0dfe56c..e4565aa0 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -120,6 +120,11 @@ struct PostgresClosure
    */
   char *currency;
 
+  /**
+   * Our base URL.
+   */
+  char *exchange_url;
+
   /**
    * Postgres connection handle.
    */
@@ -353,13 +358,14 @@ prepare_statements (struct PostgresClosure *pg)
                             ",current_balance_frac"
                             ",expiration_date"
                             ",gc_date"
-                            ",FALSE AS kyc_ok" // FIXME
-                            ",CAST (0 AS INT8) AS payment_target_uuid" // FIXME
+                            ",kyc_ok"
+                            ",wire_target_serial_id AS payment_target_uuid"
                             " FROM reserves"
+                            " JOIN reserves_in USING (reserve_uuid)"
+                            " JOIN wire_targets USING (wire_target_serial_id)"
                             " WHERE reserve_pub=$1"
                             " LIMIT 1;",
                             1),
-#if FIXME_DD23
     /* Used in #postgres_set_kyc_ok() */
     GNUNET_PQ_make_prepare ("set_kyc_ok",
                             "UPDATE wire_targets"
@@ -389,7 +395,8 @@ prepare_statements (struct PostgresClosure *pg)
     // It just represents the _idea_.
     GNUNET_PQ_make_prepare ("inselect_wallet_kyc_status",
                             "INSERT INTO wire_targets"
-                            "(payto_uri"
+                            "(h_payto"
+                            ",payto_uri"
                             ") VALUES "
                             "($1)"
                             " ON CONFLICT (wire_target_serial_id) DO "
@@ -401,7 +408,6 @@ prepare_statements (struct PostgresClosure *pg)
                             "   FALSE AS kyc_ok"
                             "   wire_target_serial_id;",
                             1),
-#endif
     /* Used in #reserves_get() */
     GNUNET_PQ_make_prepare ("reserves_get",
                             "SELECT"
@@ -980,14 +986,15 @@ prepare_statements (struct PostgresClosure *pg)
        Used in #postgres_lookup_transfer_by_deposit(). */
     GNUNET_PQ_make_prepare ("get_deposit_for_wtid",
                             "SELECT"
-                            " FALSE AS kyc_ok" // FIXME
-                            ",CAST (0 AS INT8) AS payment_target_uuid" // FIXME
+                            " kyc_ok"
+                            ",wire_target_serial_id AS payment_target_uuid"
                             ",amount_with_fee_val"
                             ",amount_with_fee_frac"
                             ",denom.fee_deposit_val"
                             ",denom.fee_deposit_frac"
                             ",wire_deadline"
                             " FROM deposits"
+                            "    JOIN wire_targets USING 
(wire_target_serial_id)"
                             "    JOIN known_coins USING (known_coin_id)"
                             "    JOIN denominations denom USING 
(denominations_serial)"
                             " WHERE ((coin_pub=$1)"
@@ -3599,15 +3606,12 @@ postgres_get_kyc_status (void *cls,
                          const char *payto_uri,
                          struct TALER_EXCHANGEDB_KycStatus *kyc)
 {
-#if FIXME_DD23
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_string (payto_uri),
     GNUNET_PQ_query_param_end
   };
-#endif
   uint8_t ok8;
-#if FIXME_DD23
   struct GNUNET_PQ_ResultSpec rs[] = {
     GNUNET_PQ_result_spec_uint64 ("payment_target_uuid",
                                   &kyc->payment_target_uuid),
@@ -3615,19 +3619,12 @@ postgres_get_kyc_status (void *cls,
                                           &ok8),
     GNUNET_PQ_result_spec_end
   };
-#endif
   enum GNUNET_DB_QueryStatus qs;
 
-#if FIXME_DD23
   qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
                                                  "get_kyc_status",
                                                  params,
                                                  rs);
-#else
-  qs = 1;
-  ok8 = 0;
-  kyc->payment_target_uuid = 0;
-#endif
   kyc->type = TALER_EXCHANGEDB_KYC_DEPOSIT;
   kyc->ok = (0 != ok8);
   return qs;
@@ -3649,15 +3646,12 @@ postgres_select_kyc_status (void *cls,
                             struct TALER_PaytoHash *h_payto,
                             struct TALER_EXCHANGEDB_KycStatus *kyc)
 {
-#if FIXME_DD23
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-    GNUNET_PQ_query_param_uint64 (payment_target_uuid),
+    GNUNET_PQ_query_param_uint64 (&payment_target_uuid),
     GNUNET_PQ_query_param_end
   };
-#endif
   uint8_t ok8;
-#if FIXME_DD23
   struct GNUNET_PQ_ResultSpec rs[] = {
     GNUNET_PQ_result_spec_auto_from_type ("h_payto",
                                           h_payto),
@@ -3665,18 +3659,12 @@ postgres_select_kyc_status (void *cls,
                                           &ok8),
     GNUNET_PQ_result_spec_end
   };
-#endif
   enum GNUNET_DB_QueryStatus qs;
 
-#if FIXME_DD23
   qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
                                                  "select_kyc_status",
                                                  params,
                                                  rs);
-#else
-  qs = 1;
-  ok8 = 0;
-#endif
   kyc->type = TALER_EXCHANGEDB_KYC_UNKNOWN;
   kyc->ok = (0 != ok8);
   kyc->payment_target_uuid = payment_target_uuid;
@@ -3699,41 +3687,47 @@ postgres_inselect_wallet_kyc_status (
   const struct TALER_ReservePublicKeyP *reserve_pub,
   struct TALER_EXCHANGEDB_KycStatus *kyc)
 {
-#if FIXME_DD23
   struct PostgresClosure *pg = cls;
-  /* FIXME: maybe prepared statement will take
-     a payto:// URI instead of the reserve public key?
-     => figure out once DB schema is stable! */
-  struct GNUNET_PQ_QueryParam params[] = {
-    GNUNET_PQ_result_spec_auto_from_type ("reserve_pub",
-                                          reserve_pub),
-    GNUNET_PQ_query_param_end
-  };
-#endif
-  uint8_t ok8;
-#if FIXME_DD23
-  struct GNUNET_PQ_ResultSpec rs[] = {
-    GNUNET_PQ_result_spec_uint64 ("payment_target_uuid",
-                                  &kyc->payment_target_uuid),
-    GNUNET_PQ_result_spec_auto_from_type ("kyc_ok",
-                                          &ok8),
-    GNUNET_PQ_result_spec_end
-  };
-#endif
+  char *payto_uri;
+  struct TALER_PaytoHash h_payto;
   enum GNUNET_DB_QueryStatus qs;
 
-#if FIXME_DD23
-  qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
-                                                 "inselect_wallet_kyc_status",
-                                                 params,
-                                                 rs);
-#else
-  qs = 1;
-  ok8 = 0;
-  kyc->payment_target_uuid = 0;
-#endif
+  {
+    char *rps;
+
+    rps = GNUNET_STRINGS_data_to_string_alloc (reserve_pub,
+                                               sizeof (*reserve_pub));
+    GNUNET_asprintf (&payto_uri,
+                     "taler://reserve/%s/%s",
+                     pg->exchange_url,
+                     rps);
+    GNUNET_free (rps);
+  }
+  TALER_payto_hash (payto_uri,
+                    &h_payto);
+  {
+    struct GNUNET_PQ_QueryParam params[] = {
+      GNUNET_PQ_query_param_auto_from_type (&h_payto),
+      GNUNET_PQ_query_param_string (payto_uri),
+      GNUNET_PQ_query_param_end
+    };
+    uint8_t ok8 = 0;
+    struct GNUNET_PQ_ResultSpec rs[] = {
+      GNUNET_PQ_result_spec_uint64 ("payment_target_uuid",
+                                    &kyc->payment_target_uuid),
+      GNUNET_PQ_result_spec_auto_from_type ("kyc_ok",
+                                            &ok8),
+      GNUNET_PQ_result_spec_end
+    };
+
+    qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
+                                                   
"inselect_wallet_kyc_status",
+                                                   params,
+                                                   rs);
+    kyc->ok = (0 != ok8);
+  }
+  GNUNET_free (payto_uri);
   kyc->type = TALER_EXCHANGEDB_KYC_BALANCE;
-  kyc->ok = (0 != ok8);
   return qs;
 }
 
@@ -11239,6 +11233,19 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
     GNUNET_free (pg);
     return NULL;
   }
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_string (cfg,
+                                             "exchange",
+                                             "BASE_URL",
+                                             &pg->exchange_url))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                               "exchange",
+                               "BASE_URL");
+    GNUNET_free (pg->sql_dir);
+    GNUNET_free (pg);
+    return NULL;
+  }
   if ( (GNUNET_OK !=
         GNUNET_CONFIGURATION_get_value_time (cfg,
                                              "exchangedb",
@@ -11254,6 +11261,7 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
     GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
                                "exchangedb",
                                "LEGAL/IDLE_RESERVE_EXPIRATION_TIME");
+    GNUNET_free (pg->exchange_url);
     GNUNET_free (pg->sql_dir);
     GNUNET_free (pg);
     return NULL;
@@ -11262,6 +11270,7 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
       TALER_config_get_currency (cfg,
                                  &pg->currency))
   {
+    GNUNET_free (pg->exchange_url);
     GNUNET_free (pg->sql_dir);
     GNUNET_free (pg);
     return NULL;
@@ -11270,6 +11279,7 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
       internal_setup (pg,
                       true))
   {
+    GNUNET_free (pg->exchange_url);
     GNUNET_free (pg->currency);
     GNUNET_free (pg->sql_dir);
     GNUNET_free (pg);
@@ -11453,6 +11463,7 @@ libtaler_plugin_exchangedb_postgres_done (void *cls)
 
   if (NULL != pg->conn)
     GNUNET_PQ_disconnect (pg->conn);
+  GNUNET_free (pg->exchange_url);
   GNUNET_free (pg->sql_dir);
   GNUNET_free (pg->currency);
   GNUNET_free (pg);

-- 
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]