aboutsummaryrefslogtreecommitdiff
path: root/src/database/database-files.cpp
diff options
context:
space:
mode:
authorJude Melton-Houghton <jwmhjwmh@gmail.com>2022-09-26 17:03:43 -0400
committerGitHub <noreply@github.com>2022-09-26 17:03:43 -0400
commitf4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c (patch)
tree089ddc309e22ae8549ec3b86765ee272f57a33df /src/database/database-files.cpp
parent03428d9825cfdf2cfaed6ac9410dafccac0d4f3a (diff)
downloadminetest-f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c.tar.xz
Avoid duplication of mod metadata in memory (#12562)
Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'src/database/database-files.cpp')
-rw-r--r--src/database/database-files.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/database/database-files.cpp b/src/database/database-files.cpp
index 00bc6d765..eff08de12 100644
--- a/src/database/database-files.cpp
+++ b/src/database/database-files.cpp
@@ -396,6 +396,26 @@ bool ModMetadataDatabaseFiles::getModEntries(const std::string &modname, StringM
return true;
}
+bool ModMetadataDatabaseFiles::getModEntry(const std::string &modname,
+ const std::string &key, std::string *value)
+{
+ Json::Value *meta = getOrCreateJson(modname);
+ if (!meta)
+ return false;
+
+ if (meta->isMember(key)) {
+ *value = (*meta)[key].asString();
+ return true;
+ }
+ return false;
+}
+
+bool ModMetadataDatabaseFiles::hasModEntry(const std::string &modname, const std::string &key)
+{
+ Json::Value *meta = getOrCreateJson(modname);
+ return meta && meta->isMember(key);
+}
+
bool ModMetadataDatabaseFiles::setModEntry(const std::string &modname,
const std::string &key, const std::string &value)
{
@@ -424,6 +444,17 @@ bool ModMetadataDatabaseFiles::removeModEntry(const std::string &modname,
return false;
}
+bool ModMetadataDatabaseFiles::removeModEntries(const std::string &modname)
+{
+ Json::Value *meta = getOrCreateJson(modname);
+ if (!meta || meta->empty())
+ return false;
+
+ meta->clear();
+ m_modified.insert(modname);
+ return true;
+}
+
void ModMetadataDatabaseFiles::beginSave()
{
}