mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-31 18:31:04 +00:00
Resolve FIXME in ModStorageDatabaseSQLite3
This commit is contained in:
parent
54d48decad
commit
bb74b9d488
2 changed files with 9 additions and 16 deletions
|
@ -821,6 +821,7 @@ ModStorageDatabaseSQLite3::~ModStorageDatabaseSQLite3()
|
|||
FINALIZE_STATEMENT(get)
|
||||
FINALIZE_STATEMENT(get_keys)
|
||||
FINALIZE_STATEMENT(get_all)
|
||||
FINALIZE_STATEMENT(get_mods)
|
||||
}
|
||||
|
||||
void ModStorageDatabaseSQLite3::createDatabase()
|
||||
|
@ -840,6 +841,7 @@ void ModStorageDatabaseSQLite3::createDatabase()
|
|||
|
||||
void ModStorageDatabaseSQLite3::initStatements()
|
||||
{
|
||||
PREPARE_STATEMENT(get_mods, "SELECT DISTINCT `modname` FROM `entries`");
|
||||
PREPARE_STATEMENT(get_all, "SELECT `key`, `value` FROM `entries` WHERE `modname` = ?");
|
||||
PREPARE_STATEMENT(get_keys, "SELECT `key` FROM `entries` WHERE `modname` = ?");
|
||||
PREPARE_STATEMENT(get,
|
||||
|
@ -964,21 +966,11 @@ void ModStorageDatabaseSQLite3::listMods(std::vector<std::string> *res)
|
|||
{
|
||||
verifyDatabase();
|
||||
|
||||
// FIXME: please don't do this. this should be sqlite3_step like all others.
|
||||
char *errmsg;
|
||||
int status = sqlite3_exec(m_database,
|
||||
"SELECT `modname` FROM `entries` GROUP BY `modname`;",
|
||||
[](void *res_vp, int n_col, char **cols, char **col_names) noexcept -> int {
|
||||
try {
|
||||
((decltype(res)) res_vp)->emplace_back(cols[0]);
|
||||
} catch (...) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}, (void *) res, &errmsg);
|
||||
if (status != SQLITE_OK) {
|
||||
auto msg = std::string("Error trying to list mods with metadata: ") + errmsg;
|
||||
sqlite3_free(errmsg);
|
||||
throw DatabaseException(msg);
|
||||
while (sqlite3_step(m_stmt_get_mods) == SQLITE_ROW) {
|
||||
auto name = sqlite_to_string_view(m_stmt_get_mods, 0);
|
||||
res->emplace_back(name);
|
||||
}
|
||||
sqlite3_vrfy(sqlite3_errcode(m_database), SQLITE_DONE);
|
||||
|
||||
sqlite3_reset(m_stmt_get_mods);
|
||||
}
|
||||
|
|
|
@ -290,6 +290,7 @@ protected:
|
|||
virtual void initStatements();
|
||||
|
||||
private:
|
||||
sqlite3_stmt *m_stmt_get_mods = nullptr;
|
||||
sqlite3_stmt *m_stmt_get_all = nullptr;
|
||||
sqlite3_stmt *m_stmt_get_keys = nullptr;
|
||||
sqlite3_stmt *m_stmt_get = nullptr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue