|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*-
- * Copyright 2016 Vsevolod Stakhov
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #ifndef SRC_LIBUTIL_SQLITE_UTILS_H_
- #define SRC_LIBUTIL_SQLITE_UTILS_H_
-
- #include "config.h"
- #include "mem_pool.h"
- #include "sqlite3.h"
-
- #define RSPAMD_SQLITE3_STMT_MULTIPLE (1 << 0)
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- struct rspamd_sqlite3_prstmt {
- gint idx;
- const gchar *sql;
- const gchar *args;
- sqlite3_stmt *stmt;
- gint result;
- const gchar *ret;
- gint flags;
- };
-
- /**
- * Create prepared statements for specified database from init statements
- * @param db
- * @param max_idx
- * @param err
- * @return new prepared statements array or NULL
- */
- GArray *rspamd_sqlite3_init_prstmt (sqlite3 *db,
- struct rspamd_sqlite3_prstmt *init_stmt,
- gint max_idx,
- GError **err);
-
- /**
- * Run prepared statements by its index getting parameters and setting results from
- * varargs structure
- * @param db
- * @param stmts
- * @param idx
- * @return
- */
- gint rspamd_sqlite3_run_prstmt (rspamd_mempool_t *pool, sqlite3 *db, GArray *stmts,
- gint idx, ...);
-
- /**
- * Close and free prepared statements
- * @param db
- * @param stmts
- */
- void rspamd_sqlite3_close_prstmt (sqlite3 *db, GArray *stmts);
-
- /**
- * Creates or opens sqlite database trying to share it between processes
- * @param path
- * @param create_sql
- * @return
- */
- sqlite3 *rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool,
- const gchar *path, const gchar *create_sql,
- guint32 version, GError **err);
-
-
- /**
- * Sync sqlite3 db ensuring that all wal things are done
- * @param db
- */
- gboolean rspamd_sqlite3_sync (sqlite3 *db, gint *wal_frames, gint *wal_checkpoints);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* SRC_LIBUTIL_SQLITE_UTILS_H_ */
|