template <class ConnectionPtr>
auto ParameterStoreSample(const ConnectionPtr& conn, std::optional<int> a = {},
std::optional<int> b = {}, std::optional<int> c = {},
std::optional<int> d = {},
std::optional<int> e = {}) {
std::string filter;
auto append_if_has_value = [&](std::string_view name, const auto& value) {
if (value) {
auto separator = (parameters.
IsEmpty() ? std::string_view{} :
" AND ");
filter += fmt::format(
"{}{}=${}", separator, name, parameters.
Size());
}
};
append_if_has_value("a", a);
append_if_has_value("b", b);
append_if_has_value("c", c);
append_if_has_value("d", d);
append_if_has_value("e", e);
throw std::runtime_error("No filters provided");
}
return conn->Execute("SELECT x FROM some_table WHERE " + filter, parameters);
}