Delta Chat Core C-API
dc_sqlite3.h
1 #ifndef __DC_SQLITE3_H__
2 #define __DC_SQLITE3_H__
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 
8 /*** library-private **********************************************************/
9 
10 #include <sqlite3.h>
11 #include <libetpan/libetpan.h>
12 #include <pthread.h>
13 
14 
15 typedef struct _dc_sqlite3 dc_sqlite3_t;
16 
17 
21 struct _dc_sqlite3
22 {
24  sqlite3* cobj;
25  dc_context_t* context;
27 };
28 
29 
30 dc_sqlite3_t* dc_sqlite3_new (dc_context_t*);
31 void dc_sqlite3_unref (dc_sqlite3_t*);
32 
33 #define DC_OPEN_READONLY 0x01
34 int dc_sqlite3_open (dc_sqlite3_t*, const char* dbfile, int flags);
35 
36 void dc_sqlite3_close (dc_sqlite3_t*);
37 int dc_sqlite3_is_open (const dc_sqlite3_t*);
38 
39 /* handle configurations, private */
40 int dc_sqlite3_set_config (dc_sqlite3_t*, const char* key, const char* value);
41 int dc_sqlite3_set_config_int (dc_sqlite3_t*, const char* key, int32_t value);
42 int dc_sqlite3_set_config_int64 (dc_sqlite3_t*, const char* key, int64_t value);
43 char* dc_sqlite3_get_config (dc_sqlite3_t*, const char* key, const char* def); /* the returned string must be free()'d, returns NULL on errors */
44 int32_t dc_sqlite3_get_config_int (dc_sqlite3_t*, const char* key, int32_t def);
45 int64_t dc_sqlite3_get_config_int64 (dc_sqlite3_t*, const char* key, int64_t def);
46 
47 /* tools, these functions are compatible to the corresponding sqlite3_* functions */
48 sqlite3_stmt* dc_sqlite3_prepare (dc_sqlite3_t*, const char* sql); /* the result mus be freed using sqlite3_finalize() */
49 int dc_sqlite3_execute (dc_sqlite3_t*, const char* sql);
50 int dc_sqlite3_try_execute (dc_sqlite3_t*, const char* sql);
51 int dc_sqlite3_table_exists (dc_sqlite3_t*, const char* name);
52 void dc_sqlite3_log_error (dc_sqlite3_t*, const char* msg, ...);
53 uint32_t dc_sqlite3_get_rowid (dc_sqlite3_t*, const char* table, const char* field, const char* value);
54 uint32_t dc_sqlite3_get_rowid2 (dc_sqlite3_t*, const char* table, const char* field, uint64_t value, const char* field2, uint32_t value2);
55 
56 void dc_sqlite3_begin_transaction(dc_sqlite3_t*);
57 void dc_sqlite3_commit (dc_sqlite3_t*);
58 void dc_sqlite3_rollback (dc_sqlite3_t*);
59 
60 /* housekeeping */
61 #define DC_HOUSEKEEPING_DELAY_SEC 10
62 void dc_housekeeping (dc_context_t*);
63 
64 
65 #ifdef __cplusplus
66 } /* /extern "C" */
67 #endif
68 #endif /* __DC_SQLITE3_H__ */
69 
dc_context_t