| 51 | } |
| 52 | |
| 53 | NumberGetter |
| 54 | NumberGetter::fromConfig(const std::string & key, const Poco::Util::AbstractConfiguration & config, std::optional<uint64_t> default_value) |
| 55 | { |
| 56 | NumberGetter number_getter; |
| 57 | |
| 58 | if (!config.has(key) && default_value.has_value()) |
| 59 | { |
| 60 | number_getter.value = *default_value; |
| 61 | } |
| 62 | else if (config.has(key + ".min_value") && config.has(key + ".max_value")) |
| 63 | { |
| 64 | NumberRange range{.min_value = config.getUInt64(key + ".min_value"), .max_value = config.getUInt64(key + ".max_value")}; |
| 65 | if (range.max_value <= range.min_value) |
| 66 | throw DB::Exception(DB::ErrorCodes::BAD_ARGUMENTS, "Range is invalid for key {}: [{}, {}]", key, range.min_value, range.max_value); |
| 67 | number_getter.value = range; |
| 68 | } |
| 69 | else |
| 70 | { |
| 71 | number_getter.value = config.getUInt64(key); |
| 72 | } |
| 73 | |
| 74 | return number_getter; |
| 75 | } |
| 76 | |
| 77 | std::string NumberGetter::description() const |
| 78 | { |
nothing calls this directly
no test coverage detected