Small config fix

This commit is contained in:
fed 2023-02-24 00:20:39 +01:00
parent 6d76c8c467
commit 7fd6db31ca
2 changed files with 16 additions and 4 deletions

View File

@ -66,7 +66,7 @@ namespace config
return value; return value;
} }
nlohmann::json get_default_value(const std::string& key) std::optional<nlohmann::json> get_default_value(const std::string& key)
{ {
const auto iter = field_definitions.find(key); const auto iter = field_definitions.find(key);
if (iter == field_definitions.end()) if (iter == field_definitions.end())
@ -74,7 +74,7 @@ namespace config
return {}; return {};
} }
return iter->second.default_value; return {iter->second.default_value};
} }
nlohmann::json get_raw(const std::string& key) nlohmann::json get_raw(const std::string& key)
@ -82,7 +82,13 @@ namespace config
const auto cfg = read_config(); const auto cfg = read_config();
if (!cfg.is_object() || !cfg.contains(key)) if (!cfg.is_object() || !cfg.contains(key))
{ {
return get_default_value(key); const auto default_value = get_default_value(key);
if (default_value.has_value())
{
return default_value.value();
}
return {};
} }
return validate_config_field(key, cfg[key]); return validate_config_field(key, cfg[key]);

View File

@ -9,7 +9,7 @@ namespace config
void write_config(const nlohmann::json& json); void write_config(const nlohmann::json& json);
nlohmann::json validate_config_field(const std::string& key, const field_value& value); nlohmann::json validate_config_field(const std::string& key, const field_value& value);
nlohmann::json get_default_value(const std::string& key); std::optional<nlohmann::json> get_default_value(const std::string& key);
template <typename T> template <typename T>
std::optional<T> get(const std::string& key) std::optional<T> get(const std::string& key)
@ -17,6 +17,12 @@ namespace config
const auto cfg = read_config(); const auto cfg = read_config();
if (!cfg.is_object() || !cfg.contains(key)) if (!cfg.is_object() || !cfg.contains(key))
{ {
const auto default_value = get_default_value(key);
if (default_value.has_value())
{
return {default_value.value()};
}
return {}; return {};
} }