#include "IZ_repo.h" static IZ_ConfigItem repo_config_items[] = { { IZ_CONFIG_TYPE_STRING, sizeof(char) * 64, "Database", "Path", "-d", &IZ_REPO_DEFAULT_STATE.config.path, NULL, { .serialize = NULL, .deserialize = NULL, }, NULL, }, IZ_CONFIG_ITEM_NULL, }; void IZ_RepoBindStateToConfig(IZ_RepoState* state, IZ_ConfigItem config_items[]) { config_items[0].dest = &state->config.path; } IZ_ProcedureResult IZ_RepoSaveConfig(IZ_RepoState* state, const char* config_path) { IZ_RepoBindStateToConfig(state, repo_config_items); return IZ_ConfigSave(repo_config_items, config_path); } IZ_ProcedureResult IZ_RepoInitializeConfig(IZ_RepoState* state, const char* config_path, u8 argc, const char* argv[]) { IZ_RepoBindStateToConfig(state, repo_config_items); if (IZ_ConfigInitialize(repo_config_items, config_path, argc, argv) < 0) { return -1; } return 0; } IZ_ProcedureResult IZ_RepoInitialize(IZ_RepoState* state, const char* config_path, u8 argc, const char* argv[]) { memcpy_s(state, sizeof(IZ_RepoState), &IZ_REPO_DEFAULT_STATE, sizeof(IZ_RepoState)); if (IZ_RepoInitializeConfig(state, config_path, argc, argv) < 0) { return -2; } sqlite3_open_v2(state->config.path, &state->db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); return 0; } void IZ_RepoTeardown(IZ_RepoState* state) { sqlite3_close_v2(state->db); }