gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: Added missing charity get data


From: gnunet
Subject: [taler-donau] branch master updated: Added missing charity get data
Date: Sun, 14 Jan 2024 20:30:44 +0100

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

johannes-casaburi pushed a commit to branch master
in repository donau.

The following commit(s) were added to refs/heads/master by this push:
     new 65aa20e  Added missing charity get data
65aa20e is described below

commit 65aa20e8cdaf97a797cc0aea198f447cb6506dc2
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
AuthorDate: Sun Jan 14 20:29:56 2024 +0100

    Added missing charity get data
---
 src/donau/donau-httpd_get-charities.c | 18 +++++++--
 src/donau/donau-httpd_get-charity.c   | 13 ++++++-
 src/donaudb/pg_get_charities.c        | 26 ++++++++++++-
 src/donaudb/pg_helper.h               | 70 +++++++++++++++++------------------
 src/donaudb/pg_lookup_charity.c       | 18 +++++++--
 src/include/donaudb_plugin.h          | 14 +++++--
 6 files changed, 111 insertions(+), 48 deletions(-)

diff --git a/src/donau/donau-httpd_get-charities.c 
b/src/donau/donau-httpd_get-charities.c
index 1719c43..f571c92 100644
--- a/src/donau/donau-httpd_get-charities.c
+++ b/src/donau/donau-httpd_get-charities.c
@@ -22,7 +22,6 @@
 #include <gnunet/gnunet_util_lib.h>
 #include <jansson.h>
 #include <microhttpd.h>
-#include <pthread.h>
 #include "taler/taler_json_lib.h"
 #include "taler/taler_mhd_lib.h"
 #include "taler/taler_signatures.h"
@@ -45,8 +44,12 @@
 static void
 charities_cb (
   void *cls,
+  struct DONAU_CharityPublicKeyP charity_pub,
+  const char *charity_name,
   const char *charity_url,
-  const char *charity_name)
+  struct TALER_Amount max_per_year,
+  struct TALER_Amount receipts_to_date,
+  uint64_t current_year)
 {
   json_t *charities = cls;
 
@@ -55,11 +58,18 @@ charities_cb (
     json_array_append (
       charities,
       GNUNET_JSON_PACK (
+        GNUNET_JSON_pack_data_auto ("charity_pub",
+                                    &charity_pub),
         GNUNET_JSON_pack_string ("url",
                                  charity_url),
         GNUNET_JSON_pack_string ("name",
-                                 charity_name)
-        )));
+                                 charity_name),
+        TALER_JSON_pack_amount ("max_per_year",
+                                &max_per_year),
+        TALER_JSON_pack_amount ("receipts_to_date",
+                                &receipts_to_date),
+        GNUNET_JSON_pack_int64 ("current_year",
+                                current_year))));
 }
 
 
diff --git a/src/donau/donau-httpd_get-charity.c 
b/src/donau/donau-httpd_get-charity.c
index c81d0d8..597a8a6 100644
--- a/src/donau/donau-httpd_get-charity.c
+++ b/src/donau/donau-httpd_get-charity.c
@@ -99,13 +99,24 @@ DH_handler_charity_get (
     result = TALER_MHD_REPLY_JSON_PACK (
       rc->connection,
       MHD_HTTP_OK,
+      GNUNET_JSON_pack_data_auto ("charity_pub",
+                                  meta.charity_pub),
       GNUNET_JSON_pack_data_auto ("url",
                                   &meta.charity_url),
       GNUNET_JSON_pack_data_auto ("name",
-                                  &meta.charity_name));
+                                  &meta.charity_name),
+      TALER_JSON_pack_amount ("max_per_year",
+                              meta.max_per_year),
+      TALER_JSON_pack_amount ("receipts_to_date",
+                              meta.receipts_to_date),
+      GNUNET_JSON_pack_uint64 ("current_year",
+                               meta.current_year));
 
+    GNUNET_free (meta.charity_pub);
     GNUNET_free (meta.charity_url);
     GNUNET_free (meta.charity_name);
+    GNUNET_free (meta.max_per_year);
+    GNUNET_free (meta.receipts_to_date);
     return result;
   }
 }
diff --git a/src/donaudb/pg_get_charities.c b/src/donaudb/pg_get_charities.c
index 7628edf..e9c8f94 100644
--- a/src/donaudb/pg_get_charities.c
+++ b/src/donaudb/pg_get_charities.c
@@ -65,14 +65,28 @@ get_charities_cb (void *cls,
 
   for (unsigned int i = 0; i < num_results; i++)
   {
+    struct DONAU_CharityPublicKeyP charity_pub;
     char *charity_name;
     char *charity_url;
+    struct TALER_Amount max_per_year;
+    struct TALER_Amount receipts_to_date;
+    uint64_t current_year;
 
     struct GNUNET_PQ_ResultSpec rs[] = {
+      GNUNET_PQ_result_spec_auto_from_type ("charity_pub",
+                                            &charity_pub),
       GNUNET_PQ_result_spec_string ("charity_name",
                                     &charity_name),
       GNUNET_PQ_result_spec_string ("charity_url",
                                     &charity_url),
+      TALER_PQ_result_spec_amount ("max_per_year",
+                                   "EUR",  // TODO: Error if using 
TALER_PQ_RESULT_SPEC_AMOUNT
+                                   &max_per_year),
+      TALER_PQ_result_spec_amount ("receipts_to_date",
+                                   "EUR", // TODO: Error if using 
TALER_PQ_RESULT_SPEC_AMOUNT
+                                   &receipts_to_date),
+      GNUNET_PQ_result_spec_uint64 ("current_year",
+                                    &current_year),
       GNUNET_PQ_result_spec_end
     };
 
@@ -86,8 +100,12 @@ get_charities_cb (void *cls,
       return;
     }
     ctx->cb (ctx->cb_cls,
+             charity_pub,
              charity_name,
-             charity_url);
+             charity_url,
+             max_per_year,
+             receipts_to_date,
+             current_year);
     GNUNET_PQ_cleanup_result (rs);
   }
 }
@@ -112,8 +130,12 @@ DH_PG_get_charities (void *cls,
   PREPARE (pg,
            "get_charities",
            "SELECT"
-           " charity_name"
+           " charity_pub"
+           ",charity_name"
            ",charity_url"
+           ",max_per_year"
+           ",receipts_to_date"
+           ",current_year"
            " FROM charities");
   qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
                                              "get_charities",
diff --git a/src/donaudb/pg_helper.h b/src/donaudb/pg_helper.h
index 03cd852..d21a0ea 100644
--- a/src/donaudb/pg_helper.h
+++ b/src/donaudb/pg_helper.h
@@ -54,17 +54,17 @@ struct PostgresClosure
    */
   struct GNUNET_PQ_Context *conn;
 
+  /**
+   * Name of the current transaction, for debugging.
+   */
+  const char *transaction_name;
+
   /**
    * Counts how often we have established a fresh @e conn
    * to the database. Used to re-prepare statements.
    */
   unsigned long long prep_gen;
 
-  /**
-  * Name of the current transaction, for debugging.
-  */
-  const char *transaction_name;
-
 };
 
 
@@ -78,37 +78,37 @@ struct PostgresClosure
  * @param sql actual SQL text
  */
 #define PREPARE(pg,name,sql)                      \
-        do {                                            \
-          static struct {                               \
-            unsigned long long cnt;                     \
-            struct PostgresClosure *pg;                 \
-          } preps[2]; /* 2 ctrs for taler-auditor-sync*/ \
-          unsigned int off = 0;                         \
+  do {                                            \
+    static struct {                               \
+      unsigned long long cnt;                     \
+      struct PostgresClosure *pg;                 \
+    } preps[2]; /* 2 ctrs for taler-auditor-sync*/ \
+    unsigned int off = 0;                         \
                                                   \
-          while ( (NULL != preps[off].pg) &&            \
-                  (pg != preps[off].pg) &&              \
-                  (off < sizeof(preps) / sizeof(*preps)) ) \
-          off++;                                      \
-          GNUNET_assert (off <                          \
-                         sizeof(preps) / sizeof(*preps)); \
-          if (preps[off].cnt < pg->prep_gen)            \
-          {                                             \
-            struct GNUNET_PQ_PreparedStatement ps[] = { \
-              GNUNET_PQ_make_prepare (name, sql),       \
-              GNUNET_PQ_PREPARED_STATEMENT_END          \
-            };                                          \
+    while ( (NULL != preps[off].pg) &&            \
+            (pg != preps[off].pg) &&              \
+            (off < sizeof(preps) / sizeof(*preps)) ) \
+    off++;                                      \
+    GNUNET_assert (off <                          \
+                   sizeof(preps) / sizeof(*preps)); \
+    if (preps[off].cnt < pg->prep_gen)            \
+    {                                             \
+      struct GNUNET_PQ_PreparedStatement ps[] = { \
+        GNUNET_PQ_make_prepare (name, sql),       \
+        GNUNET_PQ_PREPARED_STATEMENT_END          \
+      };                                          \
                                                   \
-            if (GNUNET_OK !=                            \
-                GNUNET_PQ_prepare_statements (pg->conn, \
-                                              ps))      \
-            {                                           \
-              GNUNET_break (0);                         \
-              return GNUNET_DB_STATUS_HARD_ERROR;       \
-            }                                           \
-            preps[off].pg = pg;                         \
-            preps[off].cnt = pg->prep_gen;              \
-          }                                             \
-        } while (0)
+      if (GNUNET_OK !=                            \
+          GNUNET_PQ_prepare_statements (pg->conn, \
+                                        ps))      \
+      {                                           \
+        GNUNET_break (0);                         \
+        return GNUNET_DB_STATUS_HARD_ERROR;       \
+      }                                           \
+      preps[off].pg = pg;                         \
+      preps[off].cnt = pg->prep_gen;              \
+    }                                             \
+  } while (0)
 
 
 /**
@@ -120,7 +120,7 @@ struct PostgresClosure
  */
 #define TALER_PQ_RESULT_SPEC_AMOUNT(field, \
                                     amountp) TALER_PQ_result_spec_amount ( \
-          field,pg->currency,amountp)
+    field,pg->currency,amountp)
 
 
 #endif
diff --git a/src/donaudb/pg_lookup_charity.c b/src/donaudb/pg_lookup_charity.c
index 90c1ce6..1617f51 100644
--- a/src/donaudb/pg_lookup_charity.c
+++ b/src/donaudb/pg_lookup_charity.c
@@ -37,18 +37,30 @@ DH_PG_lookup_charity (
     GNUNET_PQ_query_param_end
   };
   struct GNUNET_PQ_ResultSpec rs[] = {
-    GNUNET_PQ_result_spec_string ("charity_url",
-                                  &meta->charity_url),
+    GNUNET_PQ_result_spec_auto_from_type ("charity_pub",
+                                          &meta->charity_pub),
     GNUNET_PQ_result_spec_string ("charity_name",
                                   &meta->charity_name),
+    GNUNET_PQ_result_spec_string ("charity_url",
+                                  &meta->charity_url),
+    TALER_PQ_RESULT_SPEC_AMOUNT ("max_per_year",
+                                 meta->max_per_year),
+    TALER_PQ_RESULT_SPEC_AMOUNT ("receipts_to_date",
+                                 meta->receipts_to_date),
+    GNUNET_PQ_result_spec_uint64 ("current_year",
+                                  &meta->current_year),
     GNUNET_PQ_result_spec_end
   };
 
   PREPARE (pg,
            "lookup_charity",
            "SELECT "
-           " charity_name"
+           " charity_pub"
+           " ,charity_name"
            " ,charity_url"
+           " ,max_per_year"
+           " ,receipts_to_date"
+           " ,current_year"
            " FROM charities"
            " WHERE charity_id=$1;");
   return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
diff --git a/src/include/donaudb_plugin.h b/src/include/donaudb_plugin.h
index 0351b5c..5ae015c 100644
--- a/src/include/donaudb_plugin.h
+++ b/src/include/donaudb_plugin.h
@@ -104,6 +104,11 @@ struct DONAUDB_CharityMetaData
    */
   struct TALER_Amount *receipts_to_date;
 
+  /**
+   * Current year
+   */
+  uint64_t current_year;
+
 };
 
 
@@ -177,8 +182,12 @@ typedef void
 typedef void
 (*DONAUDB_GetCharitiesCallback)(
   void *cls,
+  const struct DONAU_CharityPublicKeyP charity_pub,
   const char *charity_name,
-  const char *charity_url);
+  const char *charity_url,
+  struct TALER_Amount max_per_year,
+  struct TALER_Amount receipts_to_date,
+  uint64_t current_year);
 
 /**
  * @brief The plugin API, returned from the plugin's "init" function.
@@ -355,8 +364,7 @@ struct DONAUDB_Plugin
    *
    * @param cls closure
    * @param charity_id
-   * @param charity_url
-   * @param charity_name
+   * @param meta
    * @return database transaction status
    */
   enum GNUNET_DB_QueryStatus

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