#include "strfuncs.h"
#include "str-parse.h"
#include "settings.h"
+#include "settings-parser.h"
#ifdef BUILD_SQLITE
#include <sqlite3.h>
bool parsed_journal_use_wal;
};
+#undef DEF
+#define DEF(type, name) \
+ SETTING_DEFINE_STRUCT_##type("sqlite_"#name, name, struct sqlite_settings)
+static const struct setting_define sqlite_setting_defines[] = {
+ DEF(STR, path),
+ DEF(ENUM, journal_mode),
+ DEF(BOOL, readonly),
+
+ SETTING_DEFINE_LIST_END
+};
static const struct sqlite_settings sqlite_default_settings = {
.path = "",
.journal_mode = "delete:wal",
.readonly = FALSE,
};
+const struct setting_parser_info sqlite_setting_parser_info = {
+ .name = "sqlite",
+
+ .defines = sqlite_setting_defines,
+ .defaults = &sqlite_default_settings,
+
+ .struct_size = sizeof(struct sqlite_settings),
+ .pool_offset1 = 1 + offsetof(struct sqlite_settings, pool),
+};
extern const struct sql_db driver_sqlite_db;
extern const struct sql_result driver_sqlite_result;
return &db->api;
}
+static int
+driver_sqlite_init_v(struct event *event, struct sql_db **db_r,
+ const char **error_r)
+{
+ const struct sqlite_settings *set;
+
+ if (settings_get(event, &sqlite_setting_parser_info, 0,
+ &set, error_r) < 0)
+ return -1;
+ *db_r = driver_sqlite_init_common(event, set);
+ return 0;
+}
+
static int
driver_sqlite_parse_connect_string(pool_t pool,
const char *connect_string,
SQL_DB_FLAG_BLOCKING,
.v = {
+ .init = driver_sqlite_init_v,
.init_legacy_full = driver_sqlite_init_full_v,
.deinit = driver_sqlite_deinit_v,
.connect = driver_sqlite_connect,