Hoel
C Database abstraction library with json based language
hoel.h
Go to the documentation of this file.
1
25#ifndef __HOEL_H__
26#define __HOEL_H__
27
28#ifdef __cplusplus
29extern "C"
30{
31#endif
32
33#include "hoel-cfg.h"
34
35#include <jansson.h>
36
37#ifndef __USE_XOPEN
38 #define __USE_XOPEN
39#endif
40#include <time.h>
41#include <pthread.h>
42
44#include <yder.h>
45#include <orcania.h>
46
52#define HOEL_DB_TYPE_SQLITE 0
53#define HOEL_DB_TYPE_MARIADB 1
54#define HOEL_DB_TYPE_PGSQL 2
55
56#define HOEL_COL_TYPE_INT 0
57#define HOEL_COL_TYPE_DOUBLE 1
58#define HOEL_COL_TYPE_TEXT 2
59#define HOEL_COL_TYPE_DATE 3
60#define HOEL_COL_TYPE_BLOB 4
61#define HOEL_COL_TYPE_BOOL 5
62#define HOEL_COL_TYPE_NULL 5
63
64#define H_OK 0 /* No error */
65#define H_ERROR 1 /* Generic error */
66#define H_ERROR_PARAMS 2 /* Error in input parameters */
67#define H_ERROR_CONNECTION 3 /* Error in database connection */
68#define H_ERROR_QUERY 4 /* Error executing query */
69#define H_ERROR_MEMORY 99 /* Error allocating memory */
70
71#define H_OPTION_NONE 0x0000 /* Nothing whatsoever */
72#define H_OPTION_SELECT 0x0001 /* Execute a SELECT statement */
73#define H_OPTION_EXEC 0x0010 /* Execute an INSERT, UPDATE or DELETE statement */
74
88 int type;
89 void * connection;
90};
91
96 long long int value;
97};
98
103 double value;
104};
105
110 struct tm value;
111};
112
117 size_t length;
118 char * value;
119};
120
125 size_t length;
126 void * value;
127};
128
132struct _h_data {
133 int type;
134 void * t_data;
135};
136
140struct _h_result {
141 unsigned int nb_rows;
142 unsigned int nb_columns;
143 struct _h_data ** data;
144};
145
160int h_close_db(struct _h_connection * conn);
161
175void h_free(void * data);
176
194char * h_escape_string(const struct _h_connection * conn, const char * unsafe);
195
204char * h_escape_string_with_quotes(const struct _h_connection * conn, const char * unsafe);
205
230int h_execute_query(const struct _h_connection * conn, const char * query, struct _h_result * result, int options);
231
239int h_query_insert(const struct _h_connection * conn, const char * query);
240
247struct _h_data * h_query_last_insert_id(const struct _h_connection * conn);
248
256int h_query_update(const struct _h_connection * conn, const char * query);
257
265int h_query_delete(const struct _h_connection * conn, const char * query);
266
275int h_query_select(const struct _h_connection * conn, const char * query, struct _h_result * result);
276
296int h_execute_query_json(const struct _h_connection * conn, const char * query, json_t ** j_result);
297
306int h_query_select_json(const struct _h_connection * conn, const char * query, json_t ** j_result);
307
367int h_select(const struct _h_connection * conn, const json_t * j_query, json_t ** j_result, char ** generated_query);
368
379int h_insert(const struct _h_connection * conn, const json_t * j_query, char ** generated_query);
380
389json_t * h_last_insert_id(const struct _h_connection * conn);
390
401int h_update(const struct _h_connection * conn, const json_t * j_query, char ** generated_query);
402
413int h_delete(const struct _h_connection * conn, const json_t * j_query, char ** generated_query);
414
432char * h_build_where_clause(const struct _h_connection * conn, const char * pattern, ...);
433
450int h_clean_result(struct _h_result * result);
451
458int h_clean_data(struct _h_data * data);
459
466int h_clean_data_full(struct _h_data * data);
467
483int h_clean_connection(struct _h_connection * conn);
484
491struct _h_connection * h_connect_sqlite(const char * db_path);
492
497void h_close_sqlite(struct _h_connection * conn);
498
516char * h_escape_string_sqlite(const struct _h_connection * conn, const char * unsafe);
517
526char * h_escape_string_with_quotes_sqlite(const struct _h_connection * conn, const char * unsafe);
527
544long long int h_last_insert_id_sqlite(const struct _h_connection * conn);
545
554int h_exec_query_sqlite(const struct _h_connection * conn, const char * query);
555
566int h_execute_query_sqlite(const struct _h_connection * conn, const char * query);
567
578int h_execute_query_json_sqlite(const struct _h_connection * conn, const char * query, json_t ** j_result);
579
602int h_select_query_sqlite(const struct _h_connection * conn, const char * query, struct _h_result * result);
603
624struct _h_connection * h_connect_mariadb(const char * host, const char * user, const char * passwd, const char * db, const unsigned int port, const char * unix_socket);
625
629void h_close_mariadb(struct _h_connection * conn);
630
648char * h_escape_string_mariadb(const struct _h_connection * conn, const char * unsafe);
649
658char * h_escape_string_with_quotes_mariadb(const struct _h_connection * conn, const char * unsafe);
659
676long long int h_last_insert_id_mariadb(const struct _h_connection * conn);
677
687int h_execute_query_json_mariadb(const struct _h_connection * conn, const char * query, json_t ** j_result);
688
711int h_execute_query_mariadb(const struct _h_connection * conn, const char * query, struct _h_result * result);
712
723struct _h_data * h_get_mariadb_value(const char * value, const unsigned long length, const int m_type);
724
740struct _h_connection * h_connect_pgsql(const char * conninfo);
741
746void h_close_pgsql(struct _h_connection * conn);
747
765char * h_escape_string_pgsql(const struct _h_connection * conn, const char * unsafe);
766
775char * h_escape_string_with_quotes_pgsql(const struct _h_connection * conn, const char * unsafe);
776
797int h_execute_query_json_pgsql(const struct _h_connection * conn, const char * query, json_t ** j_result);
798
805long long int h_last_insert_id_pgsql(const struct _h_connection * conn);
806
829int h_execute_query_pgsql(const struct _h_connection * conn, const char * query, struct _h_result * result);
830
835#ifdef __cplusplus
836}
837#endif
838
839#endif /* __HOEL_H__ */
char * h_escape_string_with_quotes_sqlite(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-sqlite.c:342
char * h_escape_string_with_quotes_pgsql(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-pgsql.c:428
char * h_escape_string_pgsql(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-pgsql.c:421
char * h_escape_string_with_quotes(const struct _h_connection *conn, const char *unsafe)
Definition: hoel.c:103
char * h_escape_string_sqlite(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-sqlite.c:335
char * h_escape_string_with_quotes_mariadb(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-mariadb.c:460
char * h_escape_string(const struct _h_connection *conn, const char *unsafe)
Definition: hoel.c:73
char * h_escape_string_mariadb(const struct _h_connection *conn, const char *unsafe)
Definition: hoel-mariadb.c:453
int h_query_insert(const struct _h_connection *conn, const char *query)
Definition: hoel.c:314
struct _h_data * h_query_last_insert_id(const struct _h_connection *conn)
Definition: hoel.c:327
int h_query_update(const struct _h_connection *conn, const char *query)
Definition: hoel.c:371
int h_clean_data_full(struct _h_data *data)
Definition: hoel.c:466
int h_query_select(const struct _h_connection *conn, const char *query, struct _h_result *result)
Definition: hoel.c:397
int h_clean_data(struct _h_data *data)
Definition: hoel.c:445
int h_clean_result(struct _h_result *result)
Definition: hoel.c:422
struct _h_data * h_get_mariadb_value(const char *value, const unsigned long length, const int m_type)
Definition: hoel-mariadb.c:489
int h_execute_query_pgsql(const struct _h_connection *conn, const char *query, struct _h_result *result)
Definition: hoel-pgsql.c:441
int h_execute_query(const struct _h_connection *conn, const char *query, struct _h_result *result, int options)
Definition: hoel.c:138
int h_query_delete(const struct _h_connection *conn, const char *query)
Definition: hoel.c:384
int h_select_query_sqlite(const struct _h_connection *conn, const char *query, struct _h_result *result)
int h_execute_query_mariadb(const struct _h_connection *conn, const char *query, struct _h_result *result)
Definition: hoel-mariadb.c:473
struct _h_connection * h_connect_pgsql(const char *conninfo)
Definition: hoel-pgsql.c:410
void h_close_mariadb(struct _h_connection *conn)
Definition: hoel-mariadb.c:448
int h_clean_connection(struct _h_connection *conn)
Definition: hoel.c:633
struct _h_connection * h_connect_sqlite(const char *db_path)
Definition: hoel-sqlite.c:324
struct _h_connection * h_connect_mariadb(const char *host, const char *user, const char *passwd, const char *db, const unsigned int port, const char *unix_socket)
Definition: hoel-mariadb.c:437
void h_close_sqlite(struct _h_connection *conn)
Definition: hoel-sqlite.c:330
int h_close_db(struct _h_connection *conn)
Definition: hoel.c:40
void h_close_pgsql(struct _h_connection *conn)
Definition: hoel-pgsql.c:416
int h_execute_query_json_mariadb(const struct _h_connection *conn, const char *query, json_t **j_result)
Definition: hoel-mariadb.c:481
int h_execute_query_json_pgsql(const struct _h_connection *conn, const char *query, json_t **j_result)
Definition: hoel-pgsql.c:449
long long int h_last_insert_id_sqlite(const struct _h_connection *conn)
Definition: hoel-sqlite.c:349
int h_execute_query_sqlite(const struct _h_connection *conn, const char *query)
Definition: hoel-sqlite.c:355
int h_delete(const struct _h_connection *conn, const json_t *j_query, char **generated_query)
Definition: hoel-simple-json.c:762
long long int h_last_insert_id_pgsql(const struct _h_connection *conn)
Definition: hoel-pgsql.c:435
json_t * h_last_insert_id(const struct _h_connection *conn)
Definition: hoel-simple-json.c:674
int h_select(const struct _h_connection *conn, const json_t *j_query, json_t **j_result, char **generated_query)
Definition: hoel-simple-json.c:458
int h_exec_query_sqlite(const struct _h_connection *conn, const char *query)
char * h_build_where_clause(const struct _h_connection *conn, const char *pattern,...)
Definition: hoel-simple-json.c:807
long long int h_last_insert_id_mariadb(const struct _h_connection *conn)
Definition: hoel-mariadb.c:467
int h_execute_query_json(const struct _h_connection *conn, const char *query, json_t **j_result)
Definition: hoel.c:175
int h_insert(const struct _h_connection *conn, const json_t *j_query, char **generated_query)
Definition: hoel-simple-json.c:604
int h_execute_query_json_sqlite(const struct _h_connection *conn, const char *query, json_t **j_result)
Definition: hoel-sqlite.c:362
int h_update(const struct _h_connection *conn, const json_t *j_query, char **generated_query)
Definition: hoel-simple-json.c:712
int h_query_select_json(const struct _h_connection *conn, const char *query, json_t **j_result)
Definition: hoel.c:410
void h_free(void *data)
Definition: hoel.c:32
Definition: hoel.h:87
int type
Definition: hoel.h:88
void * connection
Definition: hoel.h:89
Definition: hoel.h:132
int type
Definition: hoel.h:133
void * t_data
Definition: hoel.h:134
Definition: hoel.h:140
unsigned int nb_rows
Definition: hoel.h:141
struct _h_data ** data
Definition: hoel.h:143
unsigned int nb_columns
Definition: hoel.h:142
Definition: hoel.h:124
size_t length
Definition: hoel.h:125
void * value
Definition: hoel.h:126
Definition: hoel.h:109
struct tm value
Definition: hoel.h:110
Definition: hoel.h:102
double value
Definition: hoel.h:103
Definition: hoel.h:95
long long int value
Definition: hoel.h:96
Definition: hoel.h:116
size_t length
Definition: hoel.h:117
char * value
Definition: hoel.h:118