sql-api-private.h revision 13a8c553f293349248b161ff851743498916e26e
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen#ifndef __SQL_API_PRIVATE_H
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen#define __SQL_API_PRIVATE_H
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen#include "sql-api.h"
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstruct sql_db {
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen const char *name;
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct sql_db *(*init)(const char *connect_string);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen void (*deinit)(struct sql_db *db);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
ccffb125d94adff0ad776de5a96e22f864d6fb0aTimo Sirainen enum sql_db_flags (*get_flags)(struct sql_db *db);
ccffb125d94adff0ad776de5a96e22f864d6fb0aTimo Sirainen
a0b89f3b1df99b3a32f44623f13ad1893118825bTimo Sirainen int (*connect)(struct sql_db *db);
13a8c553f293349248b161ff851743498916e26eTimo Sirainen const char *(*escape_string)(struct sql_db *db, const char *string);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen void (*exec)(struct sql_db *db, const char *query);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen void (*query)(struct sql_db *db, const char *query,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen sql_query_callback_t *callback, void *context);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen struct sql_result *(*query_s)(struct sql_db *db, const char *query);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen struct sql_transaction_context *(*transaction_begin)(struct sql_db *db);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen void (*transaction_commit)(struct sql_transaction_context *ctx,
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen sql_commit_callback_t *callback,
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen void *context);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen int (*transaction_commit_s)(struct sql_transaction_context *ctx,
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen const char **error_r);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen void (*transaction_rollback)(struct sql_transaction_context *ctx);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen void (*update)(struct sql_transaction_context *ctx, const char *query);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen};
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstruct sql_result {
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct sql_db *db;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen void (*free)(struct sql_result *result);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen int (*next_row)(struct sql_result *result);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen unsigned int (*get_fields_count)(struct sql_result *result);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *(*get_field_name)(struct sql_result *result,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen unsigned int idx);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen int (*find_field)(struct sql_result *result, const char *field_name);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *(*get_field_value)(struct sql_result *result,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen unsigned int idx);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *(*find_field_value)(struct sql_result *result,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *field_name);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *const *(*get_values)(struct sql_result *result);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen const char *(*get_error)(struct sql_result *result);
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen unsigned int callback:1;
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen};
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainenstruct sql_transaction_context {
dc9de21d4375faeedbe5b7e941502ac578650da9Timo Sirainen struct sql_db *db;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen};
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
8d80659e504ffb34bb0c6a633184fece35751b18Timo SirainenARRAY_DEFINE_TYPE(sql_drivers, const struct sql_db *);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainenextern ARRAY_TYPE(sql_drivers) sql_drivers;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenextern struct sql_result sql_not_connected_result;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen#endif