merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

lookup_orders.h (3050B)


      1 /*
      2    This file is part of TALER
      3    Copyright (C) 2022 Taler Systems SA
      4 
      5    TALER is free software; you can redistribute it and/or modify it under the
      6    terms of the GNU General Public License as published by the Free Software
      7    Foundation; either version 3, or (at your option) any later version.
      8 
      9    TALER is distributed in the hope that it will be useful, but WITHOUT ANY
     10    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
     11    A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
     12 
     13    You should have received a copy of the GNU General Public License along with
     14    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
     15  */
     16 /**
     17  * @file src/include/merchant-database/lookup_orders.h
     18  * @brief implementation of the lookup_orders function for Postgres
     19  * @author Iván Ávalos
     20  */
     21 #ifndef MERCHANT_DATABASE_LOOKUP_ORDERS_H
     22 #define MERCHANT_DATABASE_LOOKUP_ORDERS_H
     23 
     24 #include <taler/taler_util.h>
     25 #include <taler/taler_json_lib.h>
     26 #include "merchantdb_lib.h"
     27 
     28 
     29 /**
     30  * Filter preferences.
     31  */
     32 struct TALER_MERCHANTDB_OrderFilter
     33 {
     34   /**
     35    * Filter orders by this fulfillment URL.
     36    */
     37   const char *fulfillment_url;
     38 
     39   /**
     40    * Filter orders by this session ID.
     41    */
     42   const char *session_id;
     43 
     44   /**
     45    * Filter by payment status.
     46    */
     47   enum TALER_EXCHANGE_YesNoAll paid;
     48 
     49   /**
     50    * Filter by refund status.
     51    */
     52   enum TALER_EXCHANGE_YesNoAll refunded;
     53 
     54   /**
     55    * Filter by wire transfer status.
     56    */
     57   enum TALER_EXCHANGE_YesNoAll wired;
     58 
     59   /**
     60    * Filter orders by date, exact meaning depends on @e delta.
     61    */
     62   struct GNUNET_TIME_Timestamp date;
     63 
     64   /**
     65    * Filter orders by order serial number, exact meaning depends on @e delta.
     66    */
     67   uint64_t start_row;
     68 
     69   /**
     70    * takes value of the form N (-N), so that at most N values strictly older
     71    * (younger) than start and date are returned.
     72    */
     73   int64_t delta;
     74 
     75   /**
     76    * Timeout for long-polling.
     77    */
     78   struct GNUNET_TIME_Relative timeout;
     79 
     80   /**
     81    * Filter to apply on the summary of the order.
     82    */
     83   const char *summary_filter;
     84 
     85 };
     86 
     87 
     88 /**
     89  * Typically called by `lookup_orders`.
     90  *
     91  * @param cls a `json_t *` JSON array to build
     92  * @param order_id ID of the order
     93  * @param order_serial row of the order in the database
     94  * @param timestamp creation time of the order in the database
     95  */
     96 typedef void
     97 (*TALER_MERCHANTDB_OrdersCallback)(
     98   void *cls,
     99   const char *order_id,
    100   uint64_t order_serial,
    101   struct GNUNET_TIME_Timestamp timestamp);
    102 
    103 /**
    104  * Retrieve orders given the @a instance_id.
    105  *
    106  * @param pg database context
    107  * @param instance_id instance to obtain order of
    108  * @param of filter to apply when looking up orders
    109  * @param cb callback to pass all the orders that are found
    110  * @param cb_cls closure for @a cb
    111  * @return transaction status
    112  */
    113 enum GNUNET_DB_QueryStatus
    114 TALER_MERCHANTDB_lookup_orders (
    115   struct TALER_MERCHANTDB_PostgresContext *pg,
    116   const char *instance_id,
    117   const struct TALER_MERCHANTDB_OrderFilter *of,
    118   TALER_MERCHANTDB_OrdersCallback cb,
    119   void *cb_cls);
    120 
    121 #endif