Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
db.h
Go to the documentation of this file.
1
13#ifndef CSILK_DB_H
14#define CSILK_DB_H
15
16#include <stddef.h>
17#include <stdint.h>
18
19#include "csilk/csilk.h"
20
24typedef struct {
25 uint64_t queries_total;
26 uint64_t execs_total;
27 uint64_t errors_total;
30
36
43typedef struct csilk_db_driver_s csilk_db_driver_t;
44
62typedef struct csilk_db_pool_s {
63 csilk_db_driver_t* driver;
65 void* connection;
67 uv_mutex_t mutex;
70
77typedef struct {
78 char** values;
80 int count;
82
97
104 const char* name;
111 int (*connect)(csilk_db_pool_t* pool, const char* dsn);
112
117
125 int (*query)(csilk_db_pool_t* pool, const char* sql, csilk_db_result_t* result);
126
131 int (*exec)(csilk_db_pool_t* pool, const char* sql);
132
137
142
147
151};
152
165csilk_db_pool_t* csilk_db_pool_new(const char* driver_name, const char* dsn);
166
176
189cJSON* csilk_db_query_json(csilk_db_pool_t* pool, const char* sql);
190
200int csilk_db_exec(csilk_db_pool_t* pool, const char* sql);
201
216cJSON* csilk_db_query_param_json(csilk_db_pool_t* pool, const char* sql, const char** params);
217
231int csilk_db_register_driver(const char* name, csilk_db_driver_t* driver);
232
239csilk_db_driver_t* csilk_db_get_driver(const char* name);
240
246void csilk_db_sqlite_init(void);
247
254#ifdef HAS_MYSQL
255void csilk_db_mysql_init(void);
256#endif
257
264#ifdef HAS_POSTGRES
265void csilk_db_postgres_init(void);
266#endif
267
274#ifdef HAS_MONGODB
275void csilk_db_mongodb_init(void);
276#endif
277
284#ifdef HAS_REDIS
285void csilk_db_redis_init(void);
286#endif
287
295void csilk_db_init(void);
296
297#endif /* CSILK_DB_H */
High-performance C web framework — main public API header.
uint64_t duration_us_total
Definition db.h:28
uv_mutex_t mutex
Definition db.h:67
char ** column_names
Definition db.h:91
uint64_t queries_total
Definition db.h:25
int row_count
Definition db.h:93
csilk_db_driver_t * driver
Definition db.h:63
void * connection
Definition db.h:65
csilk_db_driver_t * csilk_db_get_driver(const char *name)
Look up a registered driver by name.
Definition db.c:374
void csilk_db_get_stats(csilk_db_stats_t *stats)
Get current database statistics.
Definition db.c:53
csilk_db_row_t ** rows
Definition db.h:90
cJSON * csilk_db_query_param_json(csilk_db_pool_t *pool, const char *sql, const char **params)
Execute a parameterised SELECT query with ? placeholders.
Definition db.c:261
int column_count
Definition db.h:94
uint64_t errors_total
Definition db.h:27
csilk_db_pool_t * csilk_db_pool_new(const char *driver_name, const char *dsn)
Create a new database pool and connect using the named driver.
Definition db.c:142
void csilk_db_pool_free(csilk_db_pool_t *pool)
Destroy a database pool and disconnect.
Definition db.c:180
int csilk_db_register_driver(const char *name, csilk_db_driver_t *driver)
Register a database driver implementation.
Definition db.c:356
void csilk_db_init(void)
Internal: Register the built-in MySQL driver.
Definition db.c:335
cJSON * csilk_db_query_json(csilk_db_pool_t *pool, const char *sql)
Execute a SELECT query and return the rows as a JSON array.
Definition db.c:194
char ** values
Definition db.h:78
uint64_t execs_total
Definition db.h:26
void csilk_db_sqlite_init(void)
Internal: Register the built-in SQLite3 driver.
Definition sqlite.c:301
int csilk_db_exec(csilk_db_pool_t *pool, const char *sql)
Execute a statement that produces no result rows.
Definition db.c:219
int count
Definition db.h:80
A (currently single-connection) database pool.
Definition db.h:62
A complete query result set.
Definition db.h:89
A single row of a query result.
Definition db.h:77
Database statistics.
Definition db.h:24
void csilk_db_mongodb_init(void)
Definition mongodb.c:315
Virtual function table implemented by each database driver.
Definition db.h:103
int(* connect)(csilk_db_pool_t *pool, const char *dsn)
Open a connection to the database.
Definition db.h:111
int(* transaction_commit)(csilk_db_pool_t *pool)
Commit the current transaction.
Definition db.h:141
int(* disconnect)(csilk_db_pool_t *pool)
Close the database connection.
Definition db.h:116
int(* query)(csilk_db_pool_t *pool, const char *sql, csilk_db_result_t *result)
Execute a SELECT query and produce a result set.
Definition db.h:125
int(* exec)(csilk_db_pool_t *pool, const char *sql)
Execute a statement that returns no result rows.
Definition db.h:131
int(* transaction_rollback)(csilk_db_pool_t *pool)
Roll back the current transaction.
Definition db.h:146
const char * name
Definition db.h:104
int(* transaction_begin)(csilk_db_pool_t *pool)
Begin a database transaction.
Definition db.h:136
void(* free_result)(csilk_db_result_t *result)
Free a result set and all associated memory.
Definition db.h:150