1
0
mirror of https://github.com/haiwen/seafile-server.git synced 2025-04-28 19:35:10 +00:00
seafile-server/common/seaf-db.h

130 lines
3.1 KiB
C
Raw Permalink Normal View History

2016-08-10 06:53:33 +00:00
#ifndef SEAF_DB_H
#define SEAF_DB_H
enum {
SEAF_DB_TYPE_SQLITE,
SEAF_DB_TYPE_MYSQL,
SEAF_DB_TYPE_PGSQL,
};
typedef struct SeafDB SeafDB;
typedef struct SeafDB CcnetDB;
2016-08-10 06:53:33 +00:00
typedef struct SeafDBRow SeafDBRow;
typedef struct SeafDBRow CcnetDBRow;
2016-08-10 06:53:33 +00:00
typedef struct SeafDBTrans SeafDBTrans;
typedef struct SeafDBTrans CcnetDBTrans;
2016-08-10 06:53:33 +00:00
typedef gboolean (*SeafDBRowFunc) (SeafDBRow *, void *);
typedef gboolean (*CcnetDBRowFunc) (CcnetDBRow *, void *);
2016-08-10 06:53:33 +00:00
SeafDB *
seaf_db_new_mysql (const char *host,
int port,
const char *user,
const char *passwd,
const char *db,
const char *unix_socket,
gboolean use_ssl,
const char *charset,
int max_connections);
#if 0
2016-08-10 06:53:33 +00:00
SeafDB *
seaf_db_new_pgsql (const char *host,
2017-01-16 07:56:51 +00:00
unsigned int port,
2016-08-10 06:53:33 +00:00
const char *user,
const char *passwd,
const char *db_name,
2016-08-20 06:58:51 +00:00
const char *unix_socket,
int max_connections);
#endif
2016-08-10 06:53:33 +00:00
SeafDB *
seaf_db_new_sqlite (const char *db_path, int max_connections);
int
seaf_db_type (SeafDB *db);
int
seaf_db_query (SeafDB *db, const char *sql);
gboolean
seaf_db_check_for_existence (SeafDB *db, const char *sql, gboolean *db_err);
int
seaf_db_foreach_selected_row (SeafDB *db, const char *sql,
SeafDBRowFunc callback, void *data);
const char *
seaf_db_row_get_column_text (SeafDBRow *row, guint32 idx);
int
seaf_db_row_get_column_int (SeafDBRow *row, guint32 idx);
gint64
seaf_db_row_get_column_int64 (SeafDBRow *row, guint32 idx);
int
seaf_db_get_int (SeafDB *db, const char *sql);
gint64
seaf_db_get_int64 (SeafDB *db, const char *sql);
char *
seaf_db_get_string (SeafDB *db, const char *sql);
/* Transaction related */
SeafDBTrans *
seaf_db_begin_transaction (SeafDB *db);
void
seaf_db_trans_close (SeafDBTrans *trans);
int
seaf_db_commit (SeafDBTrans *trans);
int
seaf_db_rollback (SeafDBTrans *trans);
int
seaf_db_trans_query (SeafDBTrans *trans, const char *sql, int n, ...);
gboolean
seaf_db_trans_check_for_existence (SeafDBTrans *trans,
const char *sql,
gboolean *db_err,
int n, ...);
int
seaf_db_trans_foreach_selected_row (SeafDBTrans *trans, const char *sql,
SeafDBRowFunc callback, void *data,
int n, ...);
2020-01-07 02:25:19 +00:00
int
seaf_db_row_get_column_count (SeafDBRow *row);
2016-08-10 06:53:33 +00:00
/* Prepared Statements */
int
seaf_db_statement_query (SeafDB *db, const char *sql, int n, ...);
gboolean
seaf_db_statement_exists (SeafDB *db, const char *sql, gboolean *db_err, int n, ...);
int
seaf_db_statement_foreach_row (SeafDB *db, const char *sql,
SeafDBRowFunc callback, void *data,
int n, ...);
int
seaf_db_statement_get_int (SeafDB *db, const char *sql, int n, ...);
gint64
seaf_db_statement_get_int64 (SeafDB *db, const char *sql, int n, ...);
char *
seaf_db_statement_get_string (SeafDB *db, const char *sql, int n, ...);
#endif