2 This file is part of GNUnet
3 Copyright (C) 2012 GNUnet e.V.
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
16 * @author Christian Grothoff
19 * Helper library to access a MySQL database
21 * @defgroup mysql MySQL library
22 * Helper library to access a MySQL database.
25 #ifndef GNUNET_MYSQL_LIB_H
26 #define GNUNET_MYSQL_LIB_H
28 #include "gnunet_util_lib.h"
29 #include <mysql/mysql.h>
34 #if 0 /* keep Emacsens' auto-indent happy */
43 struct GNUNET_MYSQL_Context;
47 * Handle for a prepared statement.
49 struct GNUNET_MYSQL_StatementHandle;
53 * Type of a callback that will be called for each
54 * data set returned from MySQL.
56 * @param cls user-defined argument
57 * @param num_values number of elements in values
58 * @param values values returned by MySQL
59 * @return #GNUNET_OK to continue iterating, #GNUNET_SYSERR to abort
62 (*GNUNET_MYSQL_DataProcessor) (void *cls,
63 unsigned int num_values,
68 * Create a mysql context.
70 * @param cfg configuration
71 * @param section configuration section to use to get MySQL configuration options
72 * @return the mysql context
74 struct GNUNET_MYSQL_Context *
75 GNUNET_MYSQL_context_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
80 * Destroy a mysql context. Also frees all associated prepared statements.
82 * @param mc context to destroy
85 GNUNET_MYSQL_context_destroy (struct GNUNET_MYSQL_Context *mc);
89 * Close database connection and all prepared statements (we got a DB
90 * error). The connection will automatically be re-opened and
91 * statements will be re-prepared if they are needed again later.
93 * @param mc mysql context
96 GNUNET_MYSQL_statements_invalidate (struct GNUNET_MYSQL_Context *mc);
100 * Get internal handle for a prepared statement. This function should rarely
101 * be used, and if, with caution! On failures during the interaction with
102 * the handle, you must call #GNUNET_MYSQL_statements_invalidate()!
104 * @param sh prepared statement to introspect
105 * @return MySQL statement handle, NULL on error
108 GNUNET_MYSQL_statement_get_stmt (struct GNUNET_MYSQL_StatementHandle *sh);
112 * Prepare a statement. Prepared statements are automatically discarded
113 * when the MySQL context is destroyed.
115 * @param mc mysql context
116 * @param query query text
117 * @return prepared statement, NULL on error
119 struct GNUNET_MYSQL_StatementHandle *
120 GNUNET_MYSQL_statement_prepare (struct GNUNET_MYSQL_Context *mc,
125 * Run a SQL statement.
127 * @param mc mysql context
128 * @param sql SQL statement to run
129 * @return #GNUNET_OK on success
130 * #GNUNET_SYSERR if there was a problem
133 GNUNET_MYSQL_statement_run (struct GNUNET_MYSQL_Context *mc,
137 #if 0 /* keep Emacsens' auto-indent happy */
146 /** @} */ /* end of group */