gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: added pg logic for get charities


From: gnunet
Subject: [taler-donau] branch master updated: added pg logic for get charities
Date: Sat, 06 Jan 2024 16:53:47 +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 c46d51e  added pg logic for get charities
c46d51e is described below

commit c46d51edeb856453d1b3ccdabcfe7fa5f9c490cc
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
AuthorDate: Sat Jan 6 16:52:45 2024 +0100

    added pg logic for get charities
---
 src/donaudb/pg_get_charities.c | 126 +++++++++++++++++++++++++++++++++++++++++
 src/donaudb/pg_get_charities.h |  37 ++++++++++++
 2 files changed, 163 insertions(+)

diff --git a/src/donaudb/pg_get_charities.c b/src/donaudb/pg_get_charities.c
new file mode 100644
index 0000000..54dc1fa
--- /dev/null
+++ b/src/donaudb/pg_get_charities.c
@@ -0,0 +1,126 @@
+/*
+   This file is part of TALER
+   Copyright (C) 2024 Taler Systems SA
+
+   TALER is free software; you can redistribute it and/or modify it under the
+   terms of the GNU General Public License as published by the Free Software
+   Foundation; either version 3, or (at your option) any later version.
+
+   TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of CHARITYABILITY or FITNESS FOR
+   A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along with
+   TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+/**
+ * @file donaudb/pg_lookup_donation_unit_key.c
+ * @brief Implementation of the lookup_donation_unit_key function for Postgres
+ * @author Johannes Casaburi
+ */
+#include "taler/platform.h"
+#include "taler/taler_error_codes.h"
+#include "taler/taler_dbevents.h"
+#include "taler/taler_pq_lib.h"
+#include "pg_lookup_charity.h"
+#include "pg_helper.h"
+
+
+/**
+ * Closure for #get_charities_cb().
+ */
+struct GetCharitiesContext
+{
+  /**
+   * Function to call per result.
+   */
+  DONAUDB_GetCharitiesCallback cb;
+
+  /**
+   * Closure for @e cb.
+   */
+  void *cb_cls;
+
+  /**
+   * Flag set to #GNUNET_OK as long as everything is fine.
+   */
+  enum GNUNET_GenericReturnValue status;
+
+};
+
+
+/**
+ * Invoke the callback for each result.
+ *
+ * @param cls a `struct MissingWireContext *`
+ * @param result SQL result
+ * @param num_results number of rows in @a result
+ */
+static void
+get_charities_cb (void *cls,
+                  PGresult *result,
+                  unsigned int num_results)
+{
+  struct GetCharitiesContext *ctx = cls;
+
+  for (unsigned int i = 0; i < num_results; i++)
+  {
+    char *charity_name;
+    char *charity_url;
+
+    struct GNUNET_PQ_ResultSpec rs[] = {
+      GNUNET_PQ_result_spec_string ("charity_name",
+                                    &charity_name),
+      GNUNET_PQ_result_spec_string ("charity_url",
+                                    &charity_url)
+      GNUNET_PQ_result_spec_end
+    };
+
+    if (GNUNET_OK !=
+        GNUNET_PQ_extract_result (result,
+                                  rs,
+                                  i))
+    {
+      GNUNET_break (0);
+      ctx->status = GNUNET_SYSERR;
+      return;
+    }
+    ctx->cb (ctx->cb_cls,
+             charity_name,
+             charity_url);
+    GNUNET_PQ_cleanup_result (rs);
+  }
+}
+
+
+enum GNUNET_DB_QueryStatus
+DH_PG_get_charities (void *cls,
+                     DONAUDB_GetCharitiesCallback cb,
+                     void *cb_cls)
+{
+  struct PostgresClosure *pg = cls;
+  struct GetWireAccountsContext ctx = {
+    .cb = cb,
+    .cb_cls = cb_cls,
+    .status = GNUNET_OK
+  };
+  struct GNUNET_PQ_QueryParam params[] = {
+    GNUNET_PQ_query_param_end
+  };
+  enum GNUNET_DB_QueryStatus qs;
+
+  PREPARE (pg,
+           "get_charities",
+           "SELECT"
+           " charity_name"
+           ",charity_url"
+           " FROM charities");
+  qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
+                                             "get_charities",
+                                             params,
+                                             &get_charities_cb,
+                                             &ctx);
+  if (GNUNET_OK != ctx.status)
+    return GNUNET_DB_STATUS_HARD_ERROR;
+  return qs;
+}
diff --git a/src/donaudb/pg_get_charities.h b/src/donaudb/pg_get_charities.h
new file mode 100644
index 0000000..3c6a807
--- /dev/null
+++ b/src/donaudb/pg_get_charities.h
@@ -0,0 +1,37 @@
+/*
+   This file is part of TALER
+   Copyright (C) 2024 Taler Systems SA
+
+   TALER is free software; you can redistribute it and/or modify it under the
+   terms of the GNU General Public License as published by the Free Software
+   Foundation; either version 3, or (at your option) any later version.
+
+   TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of CHARITYABILITY or FITNESS FOR
+   A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along with
+   TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+/**
+ * @file donaudb/pg_lookup_charity.h
+ * @brief implementation of the get_charities function for Postgres
+ * @author Johannes Casaburi
+ */
+#ifndef PG_GET_CHARITIES_H
+#define PG_GET_CHARITIES_H
+
+/**
+ * Obtain information about the enabled wire accounts of the exchange.
+ *
+ * @param cls closure
+ * @param cb function to call on each account
+ * @param cb_cls closure for @a cb
+ * @return transaction status code
+ */
+enum GNUNET_DB_QueryStatus
+DH_PG_get_charities (void *cls,
+                     DONAUDB_GetCharitiesCallback cb,
+                     void *cb_cls);
+
+#endif

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