gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: better query


From: gnunet
Subject: [taler-exchange] branch master updated: better query
Date: Thu, 24 Mar 2022 09:06:01 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 6ffc2c68 better query
6ffc2c68 is described below

commit 6ffc2c68a3af1a4321a8fcc7c1147b4967fabd68
Author: Christian Grothoff <grothoff@gnunet.org>
AuthorDate: Thu Mar 24 09:05:29 2022 +0100

    better query
---
 src/exchangedb/plugin_exchangedb_postgres.c |  47 ++--
 src/include/taler_exchange_service.h        | 394 ++++++++++++++++++++++++++++
 2 files changed, 418 insertions(+), 23 deletions(-)

diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index 54bea9af..120f475d 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -1678,29 +1678,30 @@ prepare_statements (struct PostgresClosure *pg)
        BEGIN; SET LOCAL join_collapse_limit=1; query; COMMIT; */
     GNUNET_PQ_make_prepare (
       "recoup_by_reserve",
-      "SELECT "
-      "  rc.coin_pub,"
-      "  rc.coin_sig,"
-      "  rc.coin_blind,"
-      "  rc.amount_val,"
-      "  rc.amount_frac,"
-      "  rc.recoup_timestamp,"
-      "  denoms.denom_pub_hash,"
-      "  coins.denom_sig"
-      " FROM reserves res"
-      " JOIN reserves_out_by_reserve ror"
-      "   ON (res.reserve_uuid = ror.reserve_uuid)"
-      " JOIN reserves_out ro"
-      "   ON (ror.h_blind_ev = ro.h_blind_ev)"
-      " JOIN recoup_by_reserve rbr"
-      "   ON (rbr.reserve_out_serial_id = ro.reserve_out_serial_id)"
-      " JOIN recoup rc"
-      "   ON (rbr.coin_pub = rc.coin_pub)"
-      " JOIN known_coins coins"
-      "   ON (rc.coin_pub = coins.coin_pub)"
-      " JOIN denominations denoms"
-      "   ON (coins.denominations_serial = denoms.denominations_serial)"
-      " WHERE res.reserve_pub=$1;",
+      "SELECT"
+      " recoup.coin_pub"
+      ",recoup.coin_sig"
+      ",recoup.coin_blind"
+      ",recoup.amount_val"
+      ",recoup.amount_frac"
+      ",recoup.recoup_timestamp"
+      ",denominations.denom_pub_hash"
+      ",known_coins.denom_sig"
+      " FROM denominations"
+      " JOIN (known_coins"
+      "   JOIN recoup "
+      "   ON (recoup.coin_pub = known_coins.coin_pub))"
+      "  ON (known_coins.denominations_serial = 
denominations.denominations_serial)"
+      " WHERE recoup.coin_pub"
+      " IN (SELECT coin_pub"
+      "     FROM recoup_by_reserve"
+      "     JOIN (reserves_out"
+      "       JOIN (reserves_out_by_reserve"
+      "         JOIN reserves"
+      "           ON (reserves.reserve_uuid = 
reserves_out_by_reserve.reserve_uuid))"
+      "       ON (reserves_out_by_reserve.h_blind_ev = 
reserves_out.h_blind_ev))"
+      "     ON (recoup_by_reserve.reserve_out_serial_id = 
reserves_out.reserve_out_serial_id)"
+      "     WHERE reserves.reserve_pub=$1);",
       1),
     /* Used in #postgres_get_coin_transactions() to obtain recoup transactions
        affecting old coins of refreshed coins */
diff --git a/src/include/taler_exchange_service.h 
b/src/include/taler_exchange_service.h
index 41f01c97..229ab9e9 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -3973,4 +3973,398 @@ void
 TALER_EXCHANGE_add_auditor_denomination_cancel (
   struct TALER_EXCHANGE_AuditorAddDenominationHandle *ah);
 
+
+/* ********************* W2W API ****************** */
+
+
+/**
+ * Response generated for a purse get request.
+ */
+struct TALER_EXCHANGE_PurseGetResponse
+{
+  /**
+   * Full HTTP response.
+   */
+  struct TALER_EXCHANGE_HttpResponse *hr;
+
+  union
+  {
+  } details;
+
+};
+
+/**
+ * Function called with information about the a purse.
+ *
+ * @param cls closure
+ * @param pgr HTTP response data
+ */
+typedef void
+(*TALER_EXCHANGE_PurseGetCallback) (
+  void *cls,
+  const struct TALER_EXCHANGE_PurseGetResponse *pgr);
+
+
+/**
+ * @brief Handle for a GET /purses/$PPUB request.
+ */
+struct TALER_EXCHANGE_PurseGetHandle;
+
+
+/**
+ * Request information about a purse from the exchange.
+ *
+ * @param ctx the context
+ * @param url HTTP base URL for the exchange
+ * @param purse_priv private key of the purse to check
+ * @param merge_timeout how long to wait for a merge to happen
+ * @param deposit_timeout how long to wait for a deposit to happen
+ * @param return_contract true if we should return the contract (if available)
+ * @param cb function to call with the exchange's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_EXCHANGE_PurseGetHandle *
+TALER_EXCHANGE_purse_get (
+  struct GNUNET_CURL_Context *ctx,
+  const char *url,
+  const struct TALER_PurseContractPrivateKeyP *purse_priv,
+  struct GNUNET_TIME_Relative merge_timeout,
+  struct GNUNET_TIME_Relative deposit_timeout,
+  bool return_contract,
+  TALER_EXCHANGE_PurseGetCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel #TALER_EXCHANGE_purse_deposit() operation.
+ *
+ * @param pgh handle of the operation to cancel
+ */
+void
+TALER_EXCHANGE_purse_get_cancel (
+  struct TALER_EXCHANGE_PurseGetHandle *pgh);
+
+
+/**
+ * Response generated for a purse creation request.
+ */
+struct TALER_EXCHANGE_PurseCreateDepositResponse
+{
+  /**
+   * Full HTTP response.
+   */
+  struct TALER_EXCHANGE_HttpResponse *hr;
+
+  union
+  {
+  } details;
+
+};
+
+/**
+ * Function called with information about the creation
+ * of a new purse.
+ *
+ * @param cls closure
+ * @param pcr HTTP response data
+ */
+typedef void
+(*TALER_EXCHANGE_PurseCreateDepositCallback) (
+  void *cls,
+  const struct TALER_EXCHANGE_PurseCreateDepositResponse *pcr);
+
+
+/**
+ * @brief Handle for a POST /purses/$PID/create request.
+ */
+struct TALER_EXCHANGE_PurseCreateDepositHandle;
+
+
+/**
+ * Information about a coin to be deposited into a purse.
+ */
+struct TALER_EXCHANGE_PurseDeposit
+{
+  /**
+   * Age commitment data.
+   */
+  struct TALER_AgeCommitment age_commitment;
+
+  /**
+   * Private key of the coin.
+   */
+  struct TALER_CoinSpendPrivateKeyP coin_priv;
+
+  /**
+   * Signature proving the validity of the coin.
+   */
+  struct TALER_DenominationSignature denom_sig;
+
+  /**
+   * Hash of the denomination's public key.
+   */
+  struct TALER_DenominationHash h_denom_pub;
+
+  /**
+   * Amount of the coin to transfer into the purse.
+   */
+  struct TALER_Amount amount;
+
+};
+
+
+/**
+ * Inform the exchange that a purse should be created
+ * and coins deposited into it.
+ *
+ * @param ctx the context
+ * @param url HTTP base URL for the exchange
+ * @param purse_priv private key of the purse
+ * @param merge_pub identifies merge credential
+ * @param contract_terms contract the purse is about
+ * @param min_age minimum age we need to prove for the purse
+ * @param purse_expiration when will the unmerged purse expire
+ * @param purse_value_after_fees target amount in the purse
+ * @param num_deposits length of the @a deposits array
+ * @param deposits array of deposits to make into the purse
+ * @param cb function to call with the exchange's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_EXCHANGE_PurseCreateDepositHandle *
+TALER_EXCHANGE_purse_create_with_deposit (
+  struct GNUNET_CURL_Context *ctx,
+  const char *url,
+  const struct TALER_PurseContractPrivateKeyP *purse_priv,
+  const struct TALER_PurseMergePublicKeyP *merge_pub,
+  const json_t *contract_terms,
+  uint32_t min_age,
+  struct GNUNET_TIME_Timestamp purse_expiration,
+  const struct TALER_Amount *purse_value_after_fees,
+  unsigned int num_deposits,
+  const struct TALER_EXCHANGE_PurseDeposit *deposits,
+  TALER_EXCHANGE_PurseCreateCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel #TALER_EXCHANGE_purse_create_with_deposit() operation.
+ *
+ * @param pch handle of the operation to cancel
+ */
+void
+TALER_EXCHANGE_purse_create_with_deposit_cancel (
+  struct TALER_EXCHANGE_PurseCreateHandle *pch);
+
+
+/**
+ * Response generated for an account merge request.
+ */
+struct TALER_EXCHANGE_AccountMergeResponse
+{
+  /**
+   * Full HTTP response.
+   */
+  struct TALER_EXCHANGE_HttpResponse *hr;
+
+  union
+  {
+  } details;
+
+};
+
+/**
+ * Function called with information about an account merge
+ * operation.
+ *
+ * @param cls closure
+ * @param pcr HTTP response data
+ */
+typedef void
+(*TALER_EXCHANGE_AccountMergeCallback) (
+  void *cls,
+  const struct TALER_EXCHANGE_AccountMergeResponse *amr);
+
+
+/**
+ * @brief Handle for a POST /purses/$PID/merge request.
+ */
+struct TALER_EXCHANGE_AccountMergeHandle;
+
+
+/**
+ * Inform the exchange that a purse should be merged
+ * with a reserve.
+ *
+ * @param ctx the context
+ * @param url HTTP base URL for the exchange
+ * @param cb function to call with the exchange's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_EXCHANGE_AccountMergeHandle *
+TALER_EXCHANGE_account_merge (
+  struct GNUNET_CURL_Context *ctx,
+  const char *url,
+  const struct TALER_ReservePrivateKeyP *reserve_priv,
+  const struct TALER_PurseContractPublicKeyP *purse_pub,
+  const struct TALER_PurseMergePrivateKeyP *merge_priv,
+  struct GNUNET_TIME_Timestamp merge_timestamp,
+  TALER_EXCHANGE_PurseCreateCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel #TALER_EXCHANGE_account_merge() operation.
+ *
+ * @param amh handle of the operation to cancel
+ */
+void
+TALER_EXCHANGE_account_merge_cancel (
+  struct TALER_EXCHANGE_AccountMergeHandle *amh);
+
+
+/**
+ * Response generated for a purse creation request.
+ */
+struct TALER_EXCHANGE_PurseCreateMergeResponse
+{
+  /**
+   * Full HTTP response.
+   */
+  struct TALER_EXCHANGE_HttpResponse *hr;
+
+  union
+  {
+  } details;
+
+};
+
+/**
+ * Function called with information about the creation
+ * of a new purse.
+ *
+ * @param cls closure
+ * @param pcr HTTP response data
+ */
+typedef void
+(*TALER_EXCHANGE_PurseCreateMergeCallback) (
+  void *cls,
+  const struct TALER_EXCHANGE_PurseCreateMergeResponse *pcr);
+
+
+/**
+ * @brief Handle for a POST /reserves/$RID/purse request.
+ */
+struct TALER_EXCHANGE_PurseCreateMergeHandle;
+
+
+/**
+ * Inform the exchange that a purse should be created
+ * and merged with a reserve.
+ *
+ * @param ctx the context
+ * @param url HTTP base URL for the exchange
+ * @param reserve_priv private key of the reserve
+ * @param purse_priv private key of the purse
+ * @param contract_terms contract the purse is about
+ * @param min_age minimum age we need to prove for the purse
+ * @param purse_expiration when will the unmerged purse expire
+ * @param purse_value_after_fees target amount in the purse
+ * @param cb function to call with the exchange's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_EXCHANGE_PurseCreateMergeHandle *
+TALER_EXCHANGE_purse_create_with_merge (
+  struct GNUNET_CURL_Context *ctx,
+  const char *url,
+  const struct TALER_PurseReservePrivateKeyP *reserve_priv,
+  const struct TALER_PurseContractPrivateKeyP *purse_priv,
+  const json_t *contract_terms,
+  uint32_t min_age,
+  struct GNUNET_TIME_Timestamp purse_expiration,
+  const struct TALER_Amount *purse_value_after_fees,
+  TALER_EXCHANGE_PurseCreateMergeCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel #TALER_EXCHANGE_purse_create_with_merge() operation.
+ *
+ * @param pch handle of the operation to cancel
+ */
+void
+TALER_EXCHANGE_purse_create_with_merge_cancel (
+  struct TALER_EXCHANGE_PurseCreateMergeHandle *pch);
+
+
+/**
+ * Response generated for purse deposit request.
+ */
+struct TALER_EXCHANGE_PurseDepositResponse
+{
+  /**
+   * Full HTTP response.
+   */
+  struct TALER_EXCHANGE_HttpResponse *hr;
+
+  union
+  {
+  } details;
+
+};
+
+/**
+ * Function called with information about a deposit-into-purse
+ * operation.
+ *
+ * @param cls closure
+ * @param pcr HTTP response data
+ */
+typedef void
+(*TALER_EXCHANGE_PurseDepositCallback) (
+  void *cls,
+  const struct TALER_EXCHANGE_PurseDepositResponse *amr);
+
+
+/**
+ * @brief Handle for a POST /purses/$PID/deposit request.
+ */
+struct TALER_EXCHANGE_PurseDepositHandle;
+
+
+/**
+ * Inform the exchange that a purse should be merged
+ * with a reserve.
+ *
+ * @param ctx the context
+ * @param url HTTP base URL for the exchange
+ * @param cb function to call with the exchange's result
+ * @param cb_cls closure for @a cb
+ * @return the request handle; NULL upon error
+ */
+struct TALER_EXCHANGE_AccountMergeHandle *
+TALER_EXCHANGE_account_merge (
+  struct GNUNET_CURL_Context *ctx,
+  const char *url,
+  const struct TALER_ReservePrivateKeyP *reserve_priv,
+  const struct TALER_PurseContractPublicKeyP *purse_pub,
+  const struct TALER_PurseMergePrivateKeyP *merge_priv,
+  struct GNUNET_TIME_Timestamp merge_timestamp,
+  TALER_EXCHANGE_PurseCreateCallback cb,
+  void *cb_cls);
+
+
+/**
+ * Cancel #TALER_EXCHANGE_account_merge() operation.
+ *
+ * @param amh handle of the operation to cancel
+ */
+void
+TALER_EXCHANGE_account_merge_cancel (
+  struct TALER_EXCHANGE_AccountMergeHandle *amh);
+
+
 #endif  /* _TALER_EXCHANGE_SERVICE_H */

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