Skip to content

Commit ba5b2c8

Browse files
committed
New architecture WP 6
1 parent 6507a41 commit ba5b2c8

File tree

9 files changed

+211
-197
lines changed

9 files changed

+211
-197
lines changed

src/cloudsync.c

Lines changed: 113 additions & 96 deletions
Large diffs are not rendered by default.

src/cloudsync.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ void cloudsync_context_free (void *ctx);
3030

3131
// OK
3232
int cloudsync_cleanup (cloudsync_context *data, const char *table_name);
33+
int cloudsync_cleanup_all (cloudsync_context *data);
34+
3335
int cloudsync_init_table (cloudsync_context *data, const char *table_name, const char *algo_name, bool skip_int_pk_check);
3436

3537
int cloudsync_terminate (cloudsync_context *data);

src/cloudsync_sqlite.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ void dbsync_col_value (sqlite3_context *context, int argc, sqlite3_value **argv)
210210
if (rc < 0) goto cleanup;
211211

212212
// execute vm
213-
rc = database_step(vm);
213+
rc = databasevm_step(vm);
214214
if (rc == SQLITE_DONE) {
215215
rc = SQLITE_OK;
216216
sqlite3_result_text(context, CLOUDSYNC_RLS_RESTRICTED_VALUE, -1, SQLITE_STATIC);
@@ -225,7 +225,7 @@ void dbsync_col_value (sqlite3_context *context, int argc, sqlite3_value **argv)
225225
sqlite3 *db = sqlite3_context_db_handle(context);
226226
sqlite3_result_error(context, database_errmsg(db), -1);
227227
}
228-
database_reset(vm);
228+
databasevm_reset(vm);
229229
}
230230

231231
void dbsync_pk_encode (sqlite3_context *context, int argc, sqlite3_value **argv) {

src/database.h

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,36 +41,38 @@ typedef void dbcontext_t;
4141
#endif
4242

4343
// GENERAL
44-
int database_exec (db_t *db, const char *sql); // SQLITE_OK
45-
int database_exec_callback (db_t *db, const char *sql, int (*callback)(void *xdata, int argc, char **values, char **names), void *xdata); // SQLITE_OK and SQLITE_ABORT
46-
const char *database_errmsg (db_t *db);
47-
int database_errcode (db_t *db);
48-
bool database_in_transaction (db_t *db);
49-
50-
// VM and BINDING
51-
int database_prepare (db_t *db, const char *sql, dbvm_t **vm, int flags); // SQLITE_OK
52-
int database_step (dbvm_t *vm); // SQLITE_OK, SQLITE_DONE, SQLITE_ROW
53-
void database_finalize (dbvm_t *vm); // NO RET
54-
void database_reset (dbvm_t *vm); // NO RET
55-
void database_clear_bindings (dbvm_t *vm); // NO RET
56-
const char *database_sql (dbvm_t *vm);
57-
58-
int database_bind_blob (dbvm_t *vm, int index, const void *value, db_uint64 size); // SQLITE_OK
59-
int database_bind_double (dbvm_t *vm, int index, double value); // SQLITE_OK
60-
int database_bind_int (dbvm_t *vm, int index, db_int64 value); // SQLITE_OK
61-
int database_bind_null (dbvm_t *vm, int index); // SQLITE_OK
62-
int database_bind_text (dbvm_t *vm, int index, const char *value, int size); // SQLITE_OK
63-
int database_bind_value (dbvm_t *vm, int index, dbvalue_t *value); // SQLITE_OK
44+
typedef int (*database_exec_cb) (void *xdata, int argc, char **values, char **names);
6445

46+
int database_exec (db_t *db, const char *sql);
47+
int database_exec_callback (db_t *db, const char *sql, database_exec_cb, void *xdata);
6548
int database_begin_savepoint (db_t *db, const char *savepoint_name);
6649
int database_commit_savepoint (db_t *db, const char *savepoint_name);
6750
int database_rollback_savepoint (db_t *db, const char *savepoint_name);
51+
int database_errcode (db_t *db);
52+
bool database_in_transaction (db_t *db);
53+
const char *database_errmsg (db_t *db);
54+
55+
// VM
56+
int database_prepare (db_t *db, const char *sql, dbvm_t **vm, int flags);
57+
int databasevm_step (dbvm_t *vm);
58+
void databasevm_finalize (dbvm_t *vm);
59+
void databasevm_reset (dbvm_t *vm);
60+
void databasevm_clear_bindings (dbvm_t *vm);
61+
const char *databasevm_sql (dbvm_t *vm);
62+
63+
// BINDING
64+
int databasevm_bind_blob (dbvm_t *vm, int index, const void *value, db_uint64 size);
65+
int databasevm_bind_double (dbvm_t *vm, int index, double value);
66+
int databasevm_bind_int (dbvm_t *vm, int index, db_int64 value);
67+
int databasevm_bind_null (dbvm_t *vm, int index);
68+
int databasevm_bind_text (dbvm_t *vm, int index, const char *value, int size);
69+
int databasevm_bind_value (dbvm_t *vm, int index, dbvalue_t *value);
6870

6971
// VALUE
7072
const void *database_value_blob (dbvalue_t *value);
7173
double database_value_double (dbvalue_t *value);
7274
db_int64 database_value_int (dbvalue_t *value);
73-
const unsigned char *database_value_text (dbvalue_t *value);
75+
const char *database_value_text (dbvalue_t *value);
7476
int database_value_bytes (dbvalue_t *value);
7577
int database_value_type (dbvalue_t *value);
7678
void database_value_free (dbvalue_t *value);
@@ -80,16 +82,12 @@ void *database_value_dup (dbvalue_t *value);
8082
const void *database_column_blob (dbvm_t *vm, int index);
8183
double database_column_double (dbvm_t *vm, int index);
8284
db_int64 database_column_int (dbvm_t *vm, int index);
83-
const unsigned char *database_column_text (dbvm_t *vm, int index);
85+
const char *database_column_text (dbvm_t *vm, int index);
8486
dbvalue_t *database_column_value (dbvm_t *vm, int index);
8587
int database_column_bytes (dbvm_t *vm, int index);
8688
int database_column_type (dbvm_t *vm, int index);
8789

88-
// CONTEXT
89-
void *database_user_data (dbcontext_t *context);
90-
void database_result_error (dbcontext_t *context, const char *errmsg);
91-
void database_result_error_code (dbcontext_t *context, int errcode);
92-
90+
// RESULT
9391
void database_result_blob (dbcontext_t *context, const void *value, db_uint64 size, void(*)(void*));
9492
void database_result_double (dbcontext_t *context, double value);
9593
void database_result_int (dbcontext_t *context, db_int64 value);

src/database_sqlite.c

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,20 @@ SQLITE_EXTENSION_INIT3
2323

2424
#define CLOUDSYNC_PAYLOAD_APPLY_CALLBACK_KEY "cloudsync_payload_apply_callback"
2525

26+
// MARK: - SQL -
27+
28+
char *sql_build_drop_table (const char *table_name, char *buffer, int bsize, bool is_meta) {
29+
char *sql = NULL;
30+
31+
if (is_meta) {
32+
sql = sqlite3_snprintf(bsize, buffer, "DROP TABLE IF EXISTS \"%w_cloudsync\";", table_name);
33+
} else {
34+
sql = sqlite3_snprintf(bsize, buffer, "DROP TABLE IF EXISTS \"%w\";", table_name);
35+
}
36+
37+
return sql;
38+
}
39+
2640
// MARK: GENERAL -
2741

2842
int database_exec (db_t *db, const char *sql) {
@@ -46,29 +60,29 @@ bool database_in_transaction (db_t *db) {
4660
return in_transaction;
4761
}
4862

49-
// MARK: - VM and BINDING -
63+
// MARK: - VM -
5064

5165
int database_prepare (db_t *db, const char *sql, dbvm_t **vm, int flags) {
5266
return sqlite3_prepare_v3((sqlite3 *)db, sql, -1, flags, (sqlite3_stmt **)vm, NULL);
5367
}
5468

55-
int database_step (dbvm_t *vm) {
69+
int databasevm_step (dbvm_t *vm) {
5670
return sqlite3_step((sqlite3_stmt *)vm);
5771
}
5872

59-
void database_finalize (dbvm_t *vm) {
73+
void databasevm_finalize (dbvm_t *vm) {
6074
sqlite3_finalize((sqlite3_stmt *)vm);
6175
}
6276

63-
void database_reset (dbvm_t *vm) {
77+
void databasevm_reset (dbvm_t *vm) {
6478
sqlite3_reset((sqlite3_stmt *)vm);
6579
}
6680

67-
void database_clear_bindings (dbvm_t *vm) {
81+
void databasevm_clear_bindings (dbvm_t *vm) {
6882
sqlite3_clear_bindings((sqlite3_stmt *)vm);
6983
}
7084

71-
const char *database_sql (dbvm_t *vm) {
85+
const char *databasevm_sql (dbvm_t *vm) {
7286
return sqlite3_expanded_sql((sqlite3_stmt *)vm);
7387
}
7488

@@ -145,46 +159,32 @@ int database_pk_names (db_t *db, const char *table_name, char ***names, int *cou
145159
return rc;
146160
}
147161

148-
// MARK: -
162+
// MARK: - BINDING -
149163

150-
int database_bind_blob (dbvm_t *vm, int index, const void *value, db_uint64 size) {
164+
int databasevm_bind_blob (dbvm_t *vm, int index, const void *value, db_uint64 size) {
151165
return sqlite3_bind_blob64((sqlite3_stmt *)vm, index, value, size, SQLITE_STATIC);
152166
}
153167

154-
int database_bind_double (dbvm_t *vm, int index, double value) {
168+
int databasevm_bind_double (dbvm_t *vm, int index, double value) {
155169
return sqlite3_bind_double((sqlite3_stmt *)vm, index, value);
156170
}
157171

158-
int database_bind_int (dbvm_t *vm, int index, db_int64 value) {
172+
int databasevm_bind_int (dbvm_t *vm, int index, db_int64 value) {
159173
return sqlite3_bind_int64((sqlite3_stmt *)vm, index, value);
160174
}
161175

162-
int database_bind_null (dbvm_t *vm, int index) {
176+
int databasevm_bind_null (dbvm_t *vm, int index) {
163177
return sqlite3_bind_null((sqlite3_stmt *)vm, index);
164178
}
165179

166-
int database_bind_text (dbvm_t *vm, int index, const char *value, int size) {
180+
int databasevm_bind_text (dbvm_t *vm, int index, const char *value, int size) {
167181
return sqlite3_bind_text((sqlite3_stmt *)vm, index, value, size, SQLITE_STATIC);
168182
}
169183

170-
int database_bind_value (dbvm_t *vm, int index, dbvalue_t *value) {
184+
int databasevm_bind_value (dbvm_t *vm, int index, dbvalue_t *value) {
171185
return sqlite3_bind_value((sqlite3_stmt *)vm, index, (const sqlite3_value *)value);
172186
}
173187

174-
// MARK: - SQL -
175-
176-
char *sql_build_drop_table (const char *table_name, char *buffer, int bsize, bool is_meta) {
177-
char *sql = NULL;
178-
179-
if (is_meta) {
180-
sql = sqlite3_snprintf(bsize, buffer, "DROP TABLE IF EXISTS \"%w_cloudsync\";", table_name);
181-
} else {
182-
sql = sqlite3_snprintf(bsize, buffer, "DROP TABLE IF EXISTS \"%w\";", table_name);
183-
}
184-
185-
return sql;
186-
}
187-
188188
// MARK: - VALUE -
189189

190190
const void *database_value_blob (dbvalue_t *value) {
@@ -199,8 +199,8 @@ db_int64 database_value_int (dbvalue_t *value) {
199199
return (db_int64)sqlite3_value_int64((sqlite3_value *)value);
200200
}
201201

202-
const unsigned char *database_value_text (dbvalue_t *value) {
203-
return sqlite3_value_text((sqlite3_value *)value);
202+
const char *database_value_text (dbvalue_t *value) {
203+
return (const char *)sqlite3_value_text((sqlite3_value *)value);
204204
}
205205

206206
int database_value_bytes (dbvalue_t *value) {
@@ -234,8 +234,8 @@ db_int64 database_column_int (dbvm_t *vm, int index) {
234234
return (db_int64)sqlite3_column_int64((sqlite3_stmt *)vm, index);
235235
}
236236

237-
const unsigned char *database_column_text (dbvm_t *vm, int index) {
238-
return sqlite3_column_text((sqlite3_stmt *)vm, index);
237+
const char *database_column_text (dbvm_t *vm, int index) {
238+
return (const char *)sqlite3_column_text((sqlite3_stmt *)vm, index);
239239
}
240240

241241
dbvalue_t *database_column_value (dbvm_t *vm, int index) {

0 commit comments

Comments
 (0)