gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-merchant] branch master updated (fa2a827 -> 1720a92)


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] branch master updated (fa2a827 -> 1720a92)
Date: Sat, 17 Aug 2019 22:20:01 +0200

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

grothoff pushed a change to branch master
in repository merchant.

    from fa2a827  implement /config to query e.g. currency
     new c82286e  removing currency field from merchant database
     new d1fa465  fix sig
     new ec3c5f9  update ChangeLog
     new 1720a92  resolve

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ChangeLog                                          |   4 +
 src/backenddb/plugin_merchantdb_postgres.c         | 254 ++++++++++++---------
 src/backenddb/test-merchantdb-postgres.conf        |   3 +
 .../.config/taler/exchange/account-2.json          |   2 +-
 4 files changed, 155 insertions(+), 108 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 32efd1c..fa7767e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat 17 Aug 2019 10:03:38 PM CEST
+    Remove "currency" field from exchange database, as we only
+    support one currency per merchant backend anyway. -CG
+
 Wed Apr  4 00:19:38 CEST 2018
        Releasing taler-merchant-0.5.0 -FD
 
diff --git a/src/backenddb/plugin_merchantdb_postgres.c 
b/src/backenddb/plugin_merchantdb_postgres.c
index aaf1477..0d0f337 100644
--- a/src/backenddb/plugin_merchantdb_postgres.c
+++ b/src/backenddb/plugin_merchantdb_postgres.c
@@ -35,6 +35,33 @@
 
 
 /**
+ * Wrapper macro to add the currency from the plugin's state
+ * when fetching amounts from the database.
+ *
+ * @param field name of the database field to fetch amount from
+ * @param amountp[out] pointer to amount to set
+ */
+#define TALER_PQ_RESULT_SPEC_AMOUNT(field,amountp) 
TALER_PQ_result_spec_amount(field,pg->currency,amountp)
+
+/**
+ * Wrapper macro to add the currency from the plugin's state
+ * when fetching amounts from the database.  NBO variant.
+ *
+ * @param field name of the database field to fetch amount from
+ * @param amountp[out] pointer to amount to set
+ */
+#define TALER_PQ_RESULT_SPEC_AMOUNT_NBO(field,amountp) 
TALER_PQ_result_spec_amount_nbo(field,pg->currency,amountp)
+/**
+ * Wrapper macro to add the currency from the plugin's state
+ * when fetching amounts from the database.
+ *
+ * @param field name of the database field to fetch amount from
+ * @param amountp[out] pointer to amount to set
+ */
+#define TALER_PQ_RESULT_SPEC_AMOUNT(field,amountp) 
TALER_PQ_result_spec_amount(field,pg->currency,amountp)
+
+
+/**
  * Type of the "cls" argument given to each of the functions in
  * our API.
  */
@@ -46,6 +73,11 @@ struct PostgresClosure
    */
   PGconn *conn;
 
+  /** 
+   * Which currency do we deal in?
+   */
+  char *currency;
+  
   /**
    * Underlying configuration.
    */
@@ -132,16 +164,12 @@ postgres_initialize (void *cls)
                             ",exchange_url VARCHAR NOT NULL"
                             ",amount_with_fee_val INT8 NOT NULL"
                             ",amount_with_fee_frac INT4 NOT NULL"
-                            ",amount_with_fee_curr VARCHAR(" 
TALER_CURRENCY_LEN_STR ") NOT NULL"
                             ",deposit_fee_val INT8 NOT NULL"
                             ",deposit_fee_frac INT4 NOT NULL"
-                            ",deposit_fee_curr VARCHAR(" 
TALER_CURRENCY_LEN_STR ") NOT NULL"
                             ",refund_fee_val INT8 NOT NULL"
                             ",refund_fee_frac INT4 NOT NULL"
-                            ",refund_fee_curr VARCHAR(" TALER_CURRENCY_LEN_STR 
") NOT NULL"
                             ",wire_fee_val INT8 NOT NULL"
                             ",wire_fee_frac INT4 NOT NULL"
-                            ",wire_fee_curr VARCHAR(" TALER_CURRENCY_LEN_STR 
") NOT NULL"
                             ",signkey_pub BYTEA NOT NULL CHECK 
(LENGTH(signkey_pub)=32)"
                             ",exchange_proof BYTEA NOT NULL"
                             ",PRIMARY KEY (h_contract_terms, coin_pub)"
@@ -173,10 +201,8 @@ postgres_initialize (void *cls)
                             ",h_wire_method BYTEA NOT NULL CHECK 
(length(h_wire_method)=64)"
                             ",wire_fee_val INT8 NOT NULL"
                             ",wire_fee_frac INT4 NOT NULL"
-                            ",wire_fee_curr VARCHAR(" TALER_CURRENCY_LEN_STR 
") NOT NULL"
                             ",closing_fee_val INT8 NOT NULL"
                             ",closing_fee_frac INT4 NOT NULL"
-                            ",closing_fee_curr VARCHAR(" 
TALER_CURRENCY_LEN_STR ") NOT NULL"
                             ",start_date INT8 NOT NULL"
                             ",end_date INT8 NOT NULL"
                             ",exchange_sig BYTEA NOT NULL CHECK 
(length(exchange_sig)=64)"
@@ -190,10 +216,8 @@ postgres_initialize (void *cls)
                             ",reason VARCHAR NOT NULL"
                             ",refund_amount_val INT8 NOT NULL"
                             ",refund_amount_frac INT4 NOT NULL"
-                            ",refund_amount_curr VARCHAR(" 
TALER_CURRENCY_LEN_STR ") NOT NULL"
                             ",refund_fee_val INT8 NOT NULL"
                             ",refund_fee_frac INT4 NOT NULL"
-                            ",refund_fee_curr VARCHAR(" TALER_CURRENCY_LEN_STR 
") NOT NULL"
                             ");"),
     /* balances of the reserves available for tips */
     GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS merchant_tip_reserves 
("
@@ -201,7 +225,6 @@ postgres_initialize (void *cls)
                             ",expiration INT8 NOT NULL"
                             ",balance_val INT8 NOT NULL"
                             ",balance_frac INT4 NOT NULL"
-                            ",balance_curr VARCHAR(" TALER_CURRENCY_LEN_STR ") 
NOT NULL"
                             ",PRIMARY KEY (reserve_priv)"
                             ");"),
     /* table where we remember when tipping reserves where established / 
enabled */
@@ -211,7 +234,6 @@ postgres_initialize (void *cls)
                             ",timestamp INT8 NOT NULL"
                             ",amount_val INT8 NOT NULL"
                             ",amount_frac INT4 NOT NULL"
-                            ",amount_curr VARCHAR(" TALER_CURRENCY_LEN_STR ") 
NOT NULL"
                             ",PRIMARY KEY (credit_uuid)"
                             ");"),
     /* tips that have been authorized */
@@ -223,10 +245,8 @@ postgres_initialize (void *cls)
                             ",timestamp INT8 NOT NULL"
                             ",amount_val INT8 NOT NULL" /* overall tip amount 
*/
                             ",amount_frac INT4 NOT NULL"
-                            ",amount_curr VARCHAR(" TALER_CURRENCY_LEN_STR ") 
NOT NULL"
                             ",left_val INT8 NOT NULL" /* tip amount not yet 
picked up */
                             ",left_frac INT4 NOT NULL"
-                            ",left_curr VARCHAR(" TALER_CURRENCY_LEN_STR ") 
NOT NULL"
                             ",PRIMARY KEY (tip_id)"
                             ");"),
     /* tips that have been picked up */
@@ -235,7 +255,6 @@ postgres_initialize (void *cls)
                             ",pickup_id BYTEA NOT NULL CHECK 
(LENGTH(pickup_id)=64)"
                             ",amount_val INT8 NOT NULL"
                             ",amount_frac INT4 NOT NULL"
-                            ",amount_curr VARCHAR(" TALER_CURRENCY_LEN_STR ") 
NOT NULL"
                             ",PRIMARY KEY (pickup_id)"
                             ");"),
     GNUNET_PQ_EXECUTE_STATEMENT_END
@@ -249,20 +268,16 @@ postgres_initialize (void *cls)
                             ",exchange_url"
                             ",amount_with_fee_val"
                             ",amount_with_fee_frac"
-                            ",amount_with_fee_curr"
                             ",deposit_fee_val"
                             ",deposit_fee_frac"
-                            ",deposit_fee_curr"
                             ",refund_fee_val"
                             ",refund_fee_frac"
-                            ",refund_fee_curr"
                             ",wire_fee_val"
                             ",wire_fee_frac"
-                            ",wire_fee_curr"
                             ",signkey_pub"
                             ",exchange_proof) VALUES "
-                            "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, 
$12, $13, $14, $15, $16, $17, $18)",
-                            18),
+                            "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, 
$12, $13, $14)",
+                            14),
     GNUNET_PQ_make_prepare ("insert_transfer",
                             "INSERT INTO merchant_transfers"
                             "(h_contract_terms"
@@ -278,13 +293,11 @@ postgres_initialize (void *cls)
                             ",reason"
                             ",refund_amount_val"
                             ",refund_amount_frac"
-                            ",refund_amount_curr"
                             ",refund_fee_val"
                             ",refund_fee_frac"
-                            ",refund_fee_curr"
                             ") VALUES"
-                            "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
-                            10),
+                            "($1, $2, $3, $4, $5, $6, $7, $8)",
+                            8),
     GNUNET_PQ_make_prepare ("insert_proof",
                             "INSERT INTO merchant_proofs"
                             "(exchange_url"
@@ -325,24 +338,20 @@ postgres_initialize (void *cls)
                             ",h_wire_method"
                             ",wire_fee_val"
                             ",wire_fee_frac"
-                            ",wire_fee_curr"
                             ",closing_fee_val"
                             ",closing_fee_frac"
-                            ",closing_fee_curr"
                             ",start_date"
                             ",end_date"
                             ",exchange_sig)"
                             " VALUES "
-                            "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)",
-                            11),
+                            "($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+                            9),
     GNUNET_PQ_make_prepare ("lookup_wire_fee",
                             "SELECT"
                             " wire_fee_val"
                             ",wire_fee_frac"
-                            ",wire_fee_curr"
                             ",closing_fee_val"
                             ",closing_fee_frac"
-                            ",closing_fee_curr"
                             ",start_date"
                             ",end_date"
                             ",exchange_sig"
@@ -375,7 +384,6 @@ postgres_initialize (void *cls)
                             "SELECT"
                             " refund_amount_val"
                             ",refund_amount_frac"
-                            ",refund_amount_curr"
                             " FROM merchant_refunds"
                             " WHERE coin_pub=$1",
                             1),
@@ -424,10 +432,8 @@ postgres_initialize (void *cls)
                             ",rtransaction_id"
                             ",refund_amount_val"
                             ",refund_amount_frac"
-                            ",refund_amount_curr"
                             ",refund_fee_val"
                             ",refund_fee_frac"
-                            ",refund_fee_curr"
                             ",reason"
                             " FROM merchant_refunds"
                             " WHERE merchant_pub=$1"
@@ -495,16 +501,12 @@ postgres_initialize (void *cls)
                             ",exchange_url"
                             ",amount_with_fee_val"
                             ",amount_with_fee_frac"
-                            ",amount_with_fee_curr"
                             ",deposit_fee_val"
                             ",deposit_fee_frac"
-                            ",deposit_fee_curr"
                             ",refund_fee_val"
                             ",refund_fee_frac"
-                            ",refund_fee_curr"
                             ",wire_fee_val"
                             ",wire_fee_frac"
-                            ",wire_fee_curr"
                             ",exchange_proof"
                             " FROM merchant_deposits"
                             " WHERE h_contract_terms=$1"
@@ -514,16 +516,12 @@ postgres_initialize (void *cls)
                             "SELECT"
                             " amount_with_fee_val"
                             ",amount_with_fee_frac"
-                            ",amount_with_fee_curr"
                             ",deposit_fee_val"
                             ",deposit_fee_frac"
-                            ",deposit_fee_curr"
                             ",refund_fee_val"
                             ",refund_fee_frac"
-                            ",refund_fee_curr"
                             ",wire_fee_val"
                             ",wire_fee_frac"
-                            ",wire_fee_curr"
                             ",exchange_url"
                             ",exchange_proof"
                             " FROM merchant_deposits"
@@ -547,16 +545,12 @@ postgres_initialize (void *cls)
                             ",merchant_transfers.coin_pub"
                             ",merchant_deposits.amount_with_fee_val"
                             ",merchant_deposits.amount_with_fee_frac"
-                            ",merchant_deposits.amount_with_fee_curr"
                             ",merchant_deposits.deposit_fee_val"
                             ",merchant_deposits.deposit_fee_frac"
-                            ",merchant_deposits.deposit_fee_curr"
                             ",merchant_deposits.refund_fee_val"
                             ",merchant_deposits.refund_fee_frac"
-                            ",merchant_deposits.refund_fee_curr"
                             ",merchant_deposits.wire_fee_val"
                             ",merchant_deposits.wire_fee_frac"
-                            ",merchant_deposits.wire_fee_curr"
                             ",merchant_deposits.exchange_url"
                             ",merchant_deposits.exchange_proof"
                             " FROM merchant_transfers"
@@ -578,7 +572,6 @@ postgres_initialize (void *cls)
                             " expiration"
                             ",balance_val"
                             ",balance_frac"
-                            ",balance_curr"
                             " FROM merchant_tip_reserves"
                             " WHERE reserve_priv=$1",
                             1),
@@ -586,7 +579,6 @@ postgres_initialize (void *cls)
                             "SELECT"
                             " amount_val"
                             ",amount_frac"
-                            ",amount_curr"
                             ",justification"
                             ",tip_id"
                             " FROM merchant_tips"
@@ -597,19 +589,17 @@ postgres_initialize (void *cls)
                             " expiration=$2"
                             ",balance_val=$3"
                             ",balance_frac=$4"
-                            ",balance_curr=$5"
                             " WHERE reserve_priv=$1",
-                            5),
+                            4),
     GNUNET_PQ_make_prepare ("insert_tip_reserve_balance",
                             "INSERT INTO merchant_tip_reserves"
                             "(reserve_priv"
                             ",expiration"
                             ",balance_val"
                             ",balance_frac"
-                            ",balance_curr"
                             ") VALUES "
-                            "($1, $2, $3, $4, $5)",
-                            5),
+                            "($1, $2, $3, $4)",
+                            4),
     GNUNET_PQ_make_prepare ("insert_tip_justification",
                             "INSERT INTO merchant_tips"
                             "(reserve_priv"
@@ -619,19 +609,16 @@ postgres_initialize (void *cls)
                             ",timestamp"
                             ",amount_val"
                             ",amount_frac"
-                            ",amount_curr"
                             ",left_val"
                             ",left_frac"
-                            ",left_curr"
                             ") VALUES "
-                            "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)",
-                            11),
+                            "($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+                            9),
     GNUNET_PQ_make_prepare ("lookup_reserve_by_tip_id",
                             "SELECT"
                             " reserve_priv"
                             ",left_val"
                             ",left_frac"
-                            ",left_curr"
                             " FROM merchant_tips"
                             " WHERE tip_id=$1",
                             1),
@@ -639,7 +626,6 @@ postgres_initialize (void *cls)
                             "SELECT"
                             " amount_val"
                             ",amount_frac"
-                            ",amount_curr"
                             " FROM merchant_tip_pickups"
                             " WHERE pickup_id=$1"
                             " AND tip_id=$2",
@@ -650,7 +636,6 @@ postgres_initialize (void *cls)
                             ",timestamp"
                             ",amount_val"
                             ",amount_frac"
-                            ",amount_curr"
                             " FROM merchant_tips"
                             " WHERE tip_id=$1",
                             1),
@@ -658,19 +643,17 @@ postgres_initialize (void *cls)
                             "UPDATE merchant_tips SET"
                             " left_val=$2"
                             ",left_frac=$3"
-                            ",left_curr=$4"
                             " WHERE tip_id=$1",
-                            4),
+                            3),
     GNUNET_PQ_make_prepare ("insert_pickup_id",
                             "INSERT INTO merchant_tip_pickups"
                             "(tip_id"
                             ",pickup_id"
                             ",amount_val"
                             ",amount_frac"
-                            ",amount_curr"
                             ") VALUES "
-                            "($1, $2, $3, $4, $5)",
-                            5),
+                            "($1, $2, $3, $4)",
+                            4),
     GNUNET_PQ_make_prepare ("insert_tip_credit_uuid",
                             "INSERT INTO merchant_tip_reserve_credits"
                             "(reserve_priv"
@@ -678,10 +661,9 @@ postgres_initialize (void *cls)
                             ",timestamp"
                             ",amount_val"
                             ",amount_frac"
-                            ",amount_curr)"
-                            " VALUES "
-                            "($1, $2, $3, $4, $5, $6)",
-                            6),
+                            ") VALUES "
+                            "($1, $2, $3, $4, $5)",
+                            5),
     GNUNET_PQ_make_prepare ("lookup_tip_credit_uuid",
                             "SELECT 1 "
                             "FROM merchant_tip_reserve_credits "
@@ -1463,6 +1445,11 @@ struct GetAuthorizedTipAmountContext
    */
   enum GNUNET_DB_QueryStatus qs;
 
+  /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+
 };
 
 
@@ -1480,6 +1467,7 @@ find_tip_authorizations_cb (void *cls,
                             unsigned int num_results)
 {
   struct GetAuthorizedTipAmountContext *ctx = cls;
+  struct PostgresClosure *pg = ctx->pg;
   unsigned int i;
 
   for (i = 0; i < num_results; i++)
@@ -1492,7 +1480,7 @@ find_tip_authorizations_cb (void *cls,
                                     &just),
       GNUNET_PQ_result_spec_auto_from_type ("tip_id",
                                             &h),
-      TALER_PQ_result_spec_amount ("amount",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount",
                                     &amount),
       GNUNET_PQ_result_spec_end
     };
@@ -1561,7 +1549,9 @@ postgres_get_authorized_tip_amount (void *cls,
     GNUNET_PQ_query_param_end
   };
   enum GNUNET_DB_QueryStatus qs;
-  struct GetAuthorizedTipAmountContext ctx = { 0 };
+  struct GetAuthorizedTipAmountContext ctx = {
+    .pg = pg
+  };
 
   check_connection (pg);
   qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
@@ -1638,6 +1628,11 @@ struct FindPaymentsContext
   void *cb_cls;
 
   /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+
+  /**
    * Contract term hash used for the search.
    */
   const struct GNUNET_HashCode *h_contract_terms;
@@ -1663,6 +1658,7 @@ find_payments_cb (void *cls,
                   unsigned int num_results)
 {
   struct FindPaymentsContext *fpc = cls;
+  struct PostgresClosure *pg = fpc->pg;
 
   for (unsigned int i=0;i<num_results;i++)
   {
@@ -1678,13 +1674,13 @@ find_payments_cb (void *cls,
                                             &coin_pub),
       GNUNET_PQ_result_spec_string ("exchange_url",
                                     &exchange_url),
-      TALER_PQ_result_spec_amount ("amount_with_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee",
                                    &amount_with_fee),
-      TALER_PQ_result_spec_amount ("deposit_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("deposit_fee",
                                    &deposit_fee),
-      TALER_PQ_result_spec_amount ("refund_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_fee",
                                    &refund_fee),
-      TALER_PQ_result_spec_amount ("wire_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("wire_fee",
                                    &wire_fee),
       TALER_PQ_result_spec_json ("exchange_proof",
                                  &exchange_proof),
@@ -1742,7 +1738,8 @@ postgres_find_payments (void *cls,
   struct FindPaymentsContext fpc = {
     .h_contract_terms = h_contract_terms,
     .cb = cb,
-    .cb_cls = cb_cls
+    .cb_cls = cb_cls,
+    .pg = pg
   };
   enum GNUNET_DB_QueryStatus qs;
 
@@ -1779,6 +1776,11 @@ struct FindPaymentsByCoinContext
   void *cb_cls;
 
   /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+  
+  /**
    * Coin we are looking for.
    */
   const struct TALER_CoinSpendPublicKeyP *coin_pub;
@@ -1809,7 +1811,8 @@ find_payments_by_coin_cb (void *cls,
                           unsigned int num_results)
 {
   struct FindPaymentsByCoinContext *fpc = cls;
-
+  struct PostgresClosure *pg = fpc->pg;
+  
   for (unsigned int i=0;i<num_results;i++)
   {
     struct TALER_Amount amount_with_fee;
@@ -1819,13 +1822,13 @@ find_payments_by_coin_cb (void *cls,
     char *exchange_url;
     json_t *exchange_proof;
     struct GNUNET_PQ_ResultSpec rs[] = {
-      TALER_PQ_result_spec_amount ("amount_with_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee",
                                    &amount_with_fee),
-      TALER_PQ_result_spec_amount ("deposit_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("deposit_fee",
                                    &deposit_fee),
-      TALER_PQ_result_spec_amount ("refund_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_fee",
                                    &refund_fee),
-      TALER_PQ_result_spec_amount ("wire_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("wire_fee",
                                    &wire_fee),
       GNUNET_PQ_result_spec_string ("exchange_url",
                                    &exchange_url),
@@ -1887,6 +1890,7 @@ postgres_find_payments_by_hash_and_coin (void *cls,
   struct FindPaymentsByCoinContext fpc = {
     .cb = cb,
     .cb_cls = cb_cls,
+    .pg = pg,
     .h_contract_terms = h_contract_terms,
     .coin_pub = coin_pub
   };
@@ -1945,7 +1949,7 @@ find_transfers_cb (void *cls,
                    unsigned int num_results)
 {
   struct FindTransfersContext *ftc = cls;
-
+  
   for (unsigned int i=0;i<PQntuples (result);i++)
   {
     struct TALER_CoinSpendPublicKeyP coin_pub;
@@ -2046,6 +2050,11 @@ struct FindDepositsContext
   void *cb_cls;
 
   /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+  
+  /**
    * Transaction status (set).
    */
   enum GNUNET_DB_QueryStatus qs;
@@ -2066,6 +2075,7 @@ find_deposits_cb (void *cls,
                   unsigned int num_results)
 {
   struct FindDepositsContext *fdc = cls;
+  struct PostgresClosure *pg = fdc->pg;
 
   for (unsigned int i=0;i<PQntuples (result);i++)
   {
@@ -2082,13 +2092,13 @@ find_deposits_cb (void *cls,
                                             &h_contract_terms),
       GNUNET_PQ_result_spec_auto_from_type ("coin_pub",
                                             &coin_pub),
-      TALER_PQ_result_spec_amount ("amount_with_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee",
                                    &amount_with_fee),
-      TALER_PQ_result_spec_amount ("deposit_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("deposit_fee",
                                    &deposit_fee),
-      TALER_PQ_result_spec_amount ("refund_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_fee",
                                    &refund_fee),
-      TALER_PQ_result_spec_amount ("wire_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("wire_fee",
                                    &wire_fee),
       GNUNET_PQ_result_spec_string ("exchange_url",
                                    &exchange_url),
@@ -2143,7 +2153,8 @@ postgres_find_deposits_by_wtid (void *cls,
   };
   struct FindDepositsContext fdc = {
     .cb = cb,
-    .cb_cls = cb_cls
+    .cb_cls = cb_cls,
+    .pg = pg
   };
   enum GNUNET_DB_QueryStatus qs;
 
@@ -2175,6 +2186,11 @@ struct GetRefundsContext
   void *rc_cls;
 
   /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+
+  /**
    * Transaction result.
    */
   enum GNUNET_DB_QueryStatus qs;
@@ -2195,6 +2211,7 @@ get_refunds_cb (void *cls,
                 unsigned int num_results)
 {
   struct GetRefundsContext *grc = cls;
+  struct PostgresClosure *pg = grc->pg;
 
   for (unsigned int i=0;i<num_results;i++)
   {
@@ -2208,9 +2225,9 @@ get_refunds_cb (void *cls,
                                             &coin_pub),
       GNUNET_PQ_result_spec_uint64 ("rtransaction_id",
                                     &rtransaction_id),
-      TALER_PQ_result_spec_amount ("refund_amount",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_amount",
                                    &refund_amount),
-      TALER_PQ_result_spec_amount ("refund_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_fee",
                                    &refund_fee),
       GNUNET_PQ_result_spec_string ("reason",
                                     &reason),
@@ -2263,7 +2280,8 @@ postgres_get_refunds_from_contract_terms_hash (void *cls,
   };
   struct GetRefundsContext grc = {
     .rc = rc,
-    .rc_cls = rc_cls
+    .rc_cls = rc_cls,
+    .pg = pg
   };
   enum GNUNET_DB_QueryStatus qs;
 
@@ -2273,10 +2291,10 @@ postgres_get_refunds_from_contract_terms_hash (void 
*cls,
                    TALER_B2S (merchant_pub));
   check_connection (pg);
   qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
-                                            
"find_refunds_from_contract_terms_hash",
-                                            params,
-                                            &get_refunds_cb,
-                                            &grc);
+                                             
"find_refunds_from_contract_terms_hash",
+                                             params,
+                                             &get_refunds_cb,
+                                             &grc);
   if (0 >= qs)
     return qs;
   return grc.qs;
@@ -2411,9 +2429,9 @@ postgres_lookup_wire_fee (void *cls,
     GNUNET_PQ_query_param_end
   };
   struct GNUNET_PQ_ResultSpec rs[] = {
-    TALER_PQ_result_spec_amount ("wire_fee",
+    TALER_PQ_RESULT_SPEC_AMOUNT ("wire_fee",
                                  wire_fee),
-    TALER_PQ_result_spec_amount ("closing_fee",
+    TALER_PQ_RESULT_SPEC_AMOUNT ("closing_fee",
                                  closing_fee),
     GNUNET_PQ_result_spec_absolute_time ("start_date",
                                          start_date),
@@ -2437,6 +2455,12 @@ postgres_lookup_wire_fee (void *cls,
  */
 struct FindRefundContext
 {
+
+  /**
+   * Plugin context.
+   */
+  struct PostgresClosure *pg;
+  
   /**
    * Updated to reflect total amount refunded so far.
    */
@@ -2463,13 +2487,14 @@ process_refund_cb (void *cls,
                    unsigned int num_results)
 {
   struct FindRefundContext *ictx = cls;
-
+  struct PostgresClosure *pg = ictx->pg;
+  
   for (unsigned int i=0; i<num_results; i++)
   {
     /* Sum up existing refunds */
     struct TALER_Amount acc;
     struct GNUNET_PQ_ResultSpec rs[] = {
-      TALER_PQ_result_spec_amount ("refund_amount",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_amount",
                                    &acc),
       GNUNET_PQ_result_spec_end
     };
@@ -2550,6 +2575,7 @@ process_deposits_for_refund_cb (void *cls,
                                 unsigned int num_results)
 {
   struct InsertRefundContext *ctx = cls;
+  struct PostgresClosure *pg = ctx->pg;
   struct TALER_Amount current_refund;
   struct TALER_Amount deposit_refund[GNUNET_NZL(num_results)];
   struct TALER_CoinSpendPublicKeyP deposit_coin_pubs[GNUNET_NZL(num_results)];
@@ -2570,13 +2596,16 @@ process_deposits_for_refund_cb (void *cls,
     struct GNUNET_PQ_ResultSpec rs[] = {
       GNUNET_PQ_result_spec_auto_from_type ("coin_pub",
                                             &coin_pub),
-      TALER_PQ_result_spec_amount ("amount_with_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee",
                                    &amount_with_fee),
-      TALER_PQ_result_spec_amount ("refund_fee",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("refund_fee",
                                    &refund_fee),
       GNUNET_PQ_result_spec_end
     };
-    struct FindRefundContext ictx;
+    struct FindRefundContext ictx = {
+      .err = GNUNET_OK,
+      .pg = pg
+    };
     enum GNUNET_DB_QueryStatus ires;
     struct GNUNET_PQ_QueryParam params[] = {
       GNUNET_PQ_query_param_auto_from_type (&coin_pub),
@@ -2595,7 +2624,6 @@ process_deposits_for_refund_cb (void *cls,
     GNUNET_assert (GNUNET_OK ==
                    TALER_amount_get_zero (ctx->refund->currency,
                                           &ictx.refunded_amount));
-    ictx.err = GNUNET_OK; /* no error so far */
     ires = GNUNET_PQ_eval_prepared_multi_select (ctx->pg->conn,
                                                  "find_refunds",
                                                  params,
@@ -2975,7 +3003,7 @@ postgres_enable_tip_reserve_TR (void *cls,
     struct GNUNET_PQ_ResultSpec rs[] = {
       GNUNET_PQ_result_spec_absolute_time ("expiration",
                                            &old_expiration),
-      TALER_PQ_result_spec_amount ("balance",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("balance",
                                    &old_balance),
       GNUNET_PQ_result_spec_end
     };
@@ -3094,7 +3122,7 @@ postgres_authorize_tip_TR (void *cls,
   struct GNUNET_PQ_ResultSpec rs[] = {
     GNUNET_PQ_result_spec_absolute_time ("expiration",
                                          &old_expiration),
-    TALER_PQ_result_spec_amount ("balance",
+    TALER_PQ_RESULT_SPEC_AMOUNT ("balance",
                                  &old_balance),
     GNUNET_PQ_result_spec_end
   };
@@ -3220,11 +3248,10 @@ postgres_lookup_tip_by_id (void *cls,
                            struct TALER_Amount *amount,
                            struct GNUNET_TIME_Absolute *timestamp)
 {
+  struct PostgresClosure *pg = cls;
   char *res_exchange_url;
   struct TALER_Amount res_amount;
   struct GNUNET_TIME_Absolute res_timestamp;
-
-  struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_auto_from_type (tip_id),
     GNUNET_PQ_query_param_end
@@ -3234,7 +3261,7 @@ postgres_lookup_tip_by_id (void *cls,
                                   &res_exchange_url),
     GNUNET_PQ_result_spec_absolute_time ("timestamp",
                                          &res_timestamp),
-    TALER_PQ_result_spec_amount ("amount",
+    TALER_PQ_RESULT_SPEC_AMOUNT ("amount",
                                  &res_amount),
     GNUNET_PQ_result_spec_end
   };
@@ -3294,7 +3321,7 @@ postgres_pickup_tip_TR (void *cls,
   struct GNUNET_PQ_ResultSpec rs[] = {
     GNUNET_PQ_result_spec_auto_from_type ("reserve_priv",
                                           reserve_priv),
-    TALER_PQ_result_spec_amount ("left",
+    TALER_PQ_RESULT_SPEC_AMOUNT ("left",
                                  &left_amount),
     GNUNET_PQ_result_spec_end
   };
@@ -3340,7 +3367,7 @@ postgres_pickup_tip_TR (void *cls,
       GNUNET_PQ_query_param_end
     };
     struct GNUNET_PQ_ResultSpec rs[] = {
-      TALER_PQ_result_spec_amount ("amount",
+      TALER_PQ_RESULT_SPEC_AMOUNT ("amount",
                                    &existing_amount),
       GNUNET_PQ_result_spec_end
     };
@@ -3493,6 +3520,18 @@ libtaler_plugin_merchantdb_postgres_init (void *cls)
     GNUNET_free (pg);
     return NULL;
   }
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_string (cfg,
+                                             "taler",
+                                             "CURRENCY",
+                                             &pg->currency))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                               "taler",
+                               "CURRENCY");
+    GNUNET_free (pg);
+    return NULL;
+  }
   plugin = GNUNET_new (struct TALER_MERCHANTDB_Plugin);
   plugin->cls = pg;
   plugin->drop_tables = &postgres_drop_tables;
@@ -3546,6 +3585,7 @@ libtaler_plugin_merchantdb_postgres_done (void *cls)
   struct PostgresClosure *pg = plugin->cls;
 
   PQfinish (pg->conn);
+  GNUNET_free (pg->currency);
   GNUNET_free (pg);
   GNUNET_free (plugin);
   return NULL;
diff --git a/src/backenddb/test-merchantdb-postgres.conf 
b/src/backenddb/test-merchantdb-postgres.conf
index e2a78af..eccf421 100644
--- a/src/backenddb/test-merchantdb-postgres.conf
+++ b/src/backenddb/test-merchantdb-postgres.conf
@@ -3,3 +3,6 @@ DB = postgres
 
 [merchantdb-postgres]
 CONFIG = postgres:///talercheck
+
+[taler]
+CURRENCY = "EUR"
\ No newline at end of file
diff --git 
a/src/lib/test_merchant_api_home/.config/taler/exchange/account-2.json 
b/src/lib/test_merchant_api_home/.config/taler/exchange/account-2.json
index 0666f54..737ca76 100644
--- a/src/lib/test_merchant_api_home/.config/taler/exchange/account-2.json
+++ b/src/lib/test_merchant_api_home/.config/taler/exchange/account-2.json
@@ -2,4 +2,4 @@
   "url": "payto://x-taler-bank/localhost:8082/2",
   "master_sig": 
"RDPWNT0CDATHWRY99W7G3E2Y1GYAABTE25J8GHKPGXV07TM89W1502BG5Q82FQY0JR4HSABJC6RG92PA93QGTKWM85W64TE9CCVW63R",
   "master_pub": "T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG"
-}
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

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