Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/base/StarConfiguration.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/base/StarConfiguration.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/base/StarConfiguration.cpp')
-rw-r--r--source/base/StarConfiguration.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/source/base/StarConfiguration.cpp b/source/base/StarConfiguration.cpp
new file mode 100644
index 0000000..00c0299
--- /dev/null
+++ b/source/base/StarConfiguration.cpp
@@ -0,0 +1,54 @@
+#include "StarConfiguration.hpp"
+#include "StarFile.hpp"
+#include "StarLogging.hpp"
+
+namespace Star {
+
+Configuration::Configuration(Json defaultConfiguration, Json currentConfiguration)
+ : m_defaultConfig(defaultConfiguration), m_currentConfig(currentConfiguration) {}
+
+Json Configuration::defaultConfiguration() const {
+ return m_defaultConfig;
+}
+
+Json Configuration::currentConfiguration() const {
+ return m_currentConfig;
+}
+
+Json Configuration::get(String const& key) const {
+ MutexLocker locker(m_mutex);
+ return m_currentConfig.get(key, {});
+}
+
+Json Configuration::getPath(String const& path) const {
+ MutexLocker locker(m_mutex);
+ return m_currentConfig.query(path, {});
+}
+
+Json Configuration::getDefault(String const& key) const {
+ MutexLocker locker(m_mutex);
+ return m_defaultConfig.get(key, {});
+}
+
+Json Configuration::getDefaultPath(String const& path) const {
+ MutexLocker locker(m_mutex);
+ return m_defaultConfig.query(path, {});
+}
+
+void Configuration::set(String const& key, Json const& value) {
+ MutexLocker locker(m_mutex);
+ if (key == "configurationVersion")
+ throw ConfigurationException("cannot set configurationVersion");
+
+ m_currentConfig = m_currentConfig.set(key, value);
+}
+
+void Configuration::setPath(String const& path, Json const& value) {
+ MutexLocker locker(m_mutex);
+ if (path.splitAny("[].").get(0) == "configurationVersion")
+ throw ConfigurationException("cannot set configurationVersion");
+
+ m_currentConfig = m_currentConfig.setPath(path, value);
+}
+
+}