diff options
| author | Christian Grothoff <christian@grothoff.org> | 2015-01-28 20:53:21 +0100 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2015-01-28 20:53:21 +0100 | 
| commit | 9c3c6295a85a03fdad9a77799e85289ce65a109b (patch) | |
| tree | 4325f5a0d8f26f32effd9b2bf4c900a83a038d8a /src/include/taler_db_lib.h | |
| parent | c4b63c13029b9d731b826ffab4a9d59005b0c6a5 (diff) | |
even cleaner separation of PostGres-specific logic, and nicer libtalerutil headers
Diffstat (limited to 'src/include/taler_db_lib.h')
| -rw-r--r-- | src/include/taler_db_lib.h | 186 | 
1 files changed, 0 insertions, 186 deletions
diff --git a/src/include/taler_db_lib.h b/src/include/taler_db_lib.h deleted file mode 100644 index 6e2b2b2c..00000000 --- a/src/include/taler_db_lib.h +++ /dev/null @@ -1,186 +0,0 @@ -/* -  This file is part of TALER -  (C) 2014 Christian Grothoff (and other contributing authors) - -  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 MERCHANTABILITY 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, If not, see <http://www.gnu.org/licenses/> -*/ -/** - * @file include/taler_db_lib.h - * @brief helper functions for DB interactions - * @author Sree Harsha Totakura <sreeharsha@totakura.in> - * @author Florian Dold - * @author Christian Grothoff - */ - -#ifndef TALER_DB_LIB_H_ -#define TALER_DB_LIB_H_ - -#include <libpq-fe.h> -#include "taler_util.h" - -/** - * Description of a DB query parameter. - */ -struct TALER_DB_QueryParam -{ -  /** -   * Data or NULL -   */ -  const void *data; - -  /** -   * Size of @e data -   */ -  size_t size; - -  /** -   * Non-null if this is not the last parameter. -   * This allows for null as sentinal value. -   */ -  int more; -}; - -/** - * End of query parameter specification. - */ -#define TALER_DB_QUERY_PARAM_END { NULL, 0, 0 } - -/** - * Generate fixed-size query parameter with size given explicitly. - * - * @param x pointer to the query parameter to pass - * @param s number of bytes of @a x to use for the query - */ -#define TALER_DB_QUERY_PARAM_PTR_SIZED(x, s) { (x), (s), 1 } - -/** - * Generate fixed-size query parameter with size determined - * by variable type. - * - * @param x pointer to the query parameter to pass. - */ -#define TALER_DB_QUERY_PARAM_PTR(x) TALER_DB_QUERY_PARAM_PTR_SIZED(x, sizeof (*(x))) - - -/** - * Description of a DB result cell. - */ -struct TALER_DB_ResultSpec -{ -  /** -   * Destination for the data. -   */ -  void *dst; - -  /** -   * Allowed size for the data, 0 for variable-size -   * (in this case, the type of @e dst is a `void **` -   * and we need to allocate a buffer of the right size). -   */ -  size_t dst_size; - -  /** -   * Field name of the desired result. -   */ -  char *fname; - -  /** -   * Actual size of the result. -   */ -  size_t *result_size; - -}; - - -/** - * End of result parameter specification. - */ -#define TALER_DB_RESULT_SPEC_END { NULL, 0, NULL, NULL } - -/** - * We expect a fixed-size result, with size given explicitly - * - * @param name name of the field in the table - * @param dst point to where to store the result - * @param s number of bytes we should use in @a dst - */ -#define TALER_DB_RESULT_SPEC_SIZED(name, dst, s) { (void *) (dst), (s), (name), NULL } - -/** - * We expect a fixed-size result, with size determined by the type of `* dst` - * - * @param name name of the field in the table - * @param dst point to where to store the result, type fits expected result size - */ -#define TALER_DB_RESULT_SPEC(name, dst) TALER_DB_RESULT_SPEC_SIZED(name, dst, sizeof (*(dst))) - -/** - * Variable-size result expected. - * - * @param name name of the field in the table - * @param dst where to store the result (of type void **), to be allocated - * @param sptr pointer to a `size_t` for where to store the size of @a dst - */ -#define TALER_DB_RESULT_SPEC_VAR(name, dst, sptr) { (void *) (dst), 0, (name), sptr } - - -/** - * Execute a prepared statement. - */ -PGresult * -TALER_DB_exec_prepared (PGconn *db_conn, -                        const char *name, -                        const struct TALER_DB_QueryParam *params); - - -/** - * Extract results from a query result according to the given specification. - * If colums are NULL, the destination is not modified, and GNUNET_NO - * is returned. - * - * @return - *   #GNUNET_YES if all results could be extracted - *   #GNUNET_NO if at least one result was NULL - *   #GNUNET_SYSERR if a result was invalid (non-existing field) - */ -int -TALER_DB_extract_result (PGresult *result, -                         struct TALER_DB_ResultSpec *rs, -                         int row); - - -int -TALER_DB_field_isnull (PGresult *result, -                       int row, -                       const char *fname); - - -int -TALER_DB_extract_amount_nbo (PGresult *result, -                             int row, -                             const char *val_name, -                             const char *frac_name, -                             const char *curr_name, -                             struct TALER_AmountNBO *r_amount_nbo); - - -int -TALER_DB_extract_amount (PGresult *result, -                         int row, -                         const char *val_name, -                         const char *frac_name, -                         const char *curr_name, -                         struct TALER_Amount *r_amount); - -#endif  /* TALER_DB_LIB_H_ */ - -/* end of include/taler_db_lib.h */  | 
