1
0
mirror of https://github.com/haiwen/ccnet-server.git synced 2025-04-27 18:25:06 +00:00
ccnet-server/net/common/db-wrapper/db-wrapper.h
2016-08-19 13:54:34 +08:00

130 lines
2.8 KiB
C

#ifndef DB_WRAPPER_H
#define DB_WARPPER_H
#include <glib.h>
#define SEAF_DB_ERROR_DOMAIN g_quark_from_string("SEAF_DB")
#define SEAF_DB_ERROR_CODE 0
/* DB Connection Pool. */
struct DBConnPool {
int max_connections;
};
typedef struct DBConnPool DBConnPool;
DBConnPool *
db_conn_pool_new_mysql (const char *host,
const char *user,
const char *password,
unsigned int port,
const char *db_name,
const char *unix_socket,
gboolean use_ssl,
const char *charset,
int max_connections);
DBConnPool *
db_conn_pool_new_pgsql (const char *host,
const char *user,
const char *password,
const char *db_name,
const char *unix_socket);
DBConnPool *
db_conn_pool_new_sqlite (const char *db_path, int max_connections);
void
db_conn_pool_free (DBConnPool *pool);
/* DB Connections. */
struct ResultSet;
typedef struct ResultSet ResultSet;
struct DBStmt;
typedef struct DBStmt DBStmt;
struct DBConnection {
DBConnPool *pool;
ResultSet *result_set;
DBStmt *stmt;
};
typedef struct DBConnection DBConnection;
DBConnection *
db_conn_pool_get_connection (DBConnPool *pool, GError **error);
void
db_connection_close (DBConnection *conn);
gboolean
db_connection_execute (DBConnection *conn, const char *sql, GError **error);
/* Result Sets. */
struct ResultSet {
/* Empty */
};
ResultSet *
db_connection_execute_query (DBConnection *conn, const char *sql, GError **error);
gboolean
result_set_next (ResultSet *r, GError **error);
const char *
result_set_get_string (ResultSet *r, int idx, GError **error);
int
result_set_get_int (ResultSet *r, int idx, GError **error);
gint64
result_set_get_int64 (ResultSet *r, int idx, GError **error);
int
result_set_get_column_count (ResultSet *r);
void
result_set_free (ResultSet *r);
/* Prepared Statements. */
struct DBStmt {
ResultSet *result_set;
};
DBStmt *
db_connection_prepare_statement (DBConnection *conn, const char *sql, GError **error);
gboolean
db_stmt_set_int (DBStmt *stmt, int idx, int x, GError **error);
gboolean
db_stmt_set_int64 (DBStmt *stmt, int idx, gint64 x, GError **error);
gboolean
db_stmt_set_string (DBStmt *stmt, int idx, const char *s, GError **error);
gboolean
db_stmt_execute (DBStmt *stmt, GError **error);
ResultSet *
db_stmt_execute_query (DBStmt *stmt, GError **error);
void
db_stmt_free (DBStmt *stmt);
/* Transactions. */
gboolean
db_connection_begin_transaction (DBConnection *conn, GError **error);
gboolean
db_connection_commit (DBConnection *conn, GError **error);
gboolean
db_connection_rollback (DBConnection *conn, GError **error);
#endif