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