github.com/ncruces/go-sqlite3@v0.15.1-0.20240520133447-53eef1510ff0/sqlite3/hooks.c (about) 1 #include <stdbool.h> 2 3 #include "sqlite3.h" 4 5 int go_progress_handler(void *); 6 int go_busy_handler(void *, int); 7 int go_busy_timeout(void *, int count, int tmout); 8 9 int go_commit_hook(void *); 10 void go_rollback_hook(void *); 11 void go_update_hook(void *, int, char const *, char const *, sqlite3_int64); 12 int go_wal_hook(void *, sqlite3 *, const char *, int); 13 14 int go_authorizer(void *, int, const char *, const char *, const char *, 15 const char *); 16 17 void go_log(void *, int, const char *); 18 19 unsigned int go_autovacuum_pages(void *, const char *, unsigned int, 20 unsigned int, unsigned int); 21 22 void sqlite3_progress_handler_go(sqlite3 *db, int n) { 23 sqlite3_progress_handler(db, n, go_progress_handler, /*arg=*/db); 24 } 25 26 int sqlite3_busy_handler_go(sqlite3 *db, bool enable) { 27 return sqlite3_busy_handler(db, enable ? go_busy_handler : NULL, /*arg=*/db); 28 } 29 30 void sqlite3_commit_hook_go(sqlite3 *db, bool enable) { 31 sqlite3_commit_hook(db, enable ? go_commit_hook : NULL, /*arg=*/db); 32 } 33 34 void sqlite3_rollback_hook_go(sqlite3 *db, bool enable) { 35 sqlite3_rollback_hook(db, enable ? go_rollback_hook : NULL, /*arg=*/db); 36 } 37 38 void sqlite3_update_hook_go(sqlite3 *db, bool enable) { 39 sqlite3_update_hook(db, enable ? go_update_hook : NULL, /*arg=*/db); 40 } 41 42 void sqlite3_wal_hook_go(sqlite3 *db, bool enable) { 43 sqlite3_wal_hook(db, enable ? go_wal_hook : NULL, /*arg=*/NULL); 44 } 45 46 int sqlite3_set_authorizer_go(sqlite3 *db, bool enable) { 47 return sqlite3_set_authorizer(db, enable ? go_authorizer : NULL, /*arg=*/db); 48 } 49 50 int sqlite3_config_log_go(bool enable) { 51 return sqlite3_config(SQLITE_CONFIG_LOG, enable ? go_log : NULL, 52 /*arg=*/NULL); 53 } 54 55 int sqlite3_autovacuum_pages_go(sqlite3 *db, go_handle app) { 56 int rc = sqlite3_autovacuum_pages(db, go_autovacuum_pages, app, go_destroy); 57 if (rc) go_destroy(app); 58 return rc; 59 } 60 61 #ifndef sqliteBusyCallback 62 63 static int sqliteBusyCallback(sqlite3 *db, int count) { 64 return go_busy_timeout(db, count, db->busyTimeout); 65 } 66 67 #endif