11#include <unordered_map>
12#include <unordered_set>
14#include <userver/congestion_control/controllers/linear.hpp>
15#include <userver/storages/postgres/postgres_fwd.hpp>
16#include <userver/utils/impl/transparent_hash.hpp>
17#include <userver/utils/str_icase.hpp>
18#include <userver/utils/string_literal.hpp>
20USERVER_NAMESPACE_BEGIN
65 Mode mode = kReadWrite;
67 constexpr TransactionOptions() =
default;
75 constexpr explicit TransactionOptions(
Mode m)
79 bool IsReadOnly()
const {
return mode & kReadOnly; }
123 enum class PreparedStatementsOptionOverride { kNoOverride, kEnabled, kDisabled };
125 PreparedStatementsOptionOverride prepared_statements_enabled{PreparedStatementsOptionOverride::kNoOverride};
127 constexpr CommandControl(
128 TimeoutDuration network_timeout_ms,
129 TimeoutDuration statement_timeout_ms,
130 PreparedStatementsOptionOverride prepared_statements_enabled = PreparedStatementsOptionOverride::kNoOverride
134 prepared_statements_enabled(prepared_statements_enabled)
143 prepared_statements_enabled == rhs.prepared_statements_enabled;
150using CommandControlByMethodMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
151using CommandControlByHandlerMap =
152 USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string, CommandControlByMethodMap>;
153using CommandControlByQueryMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
155OptionalCommandControl GetHandlerOptionalCommandControl(
156 const CommandControlByHandlerMap& map,
157 std::string_view path,
158 std::string_view method
161OptionalCommandControl GetQueryOptionalCommandControl(
const CommandControlByQueryMap& map, std::string_view query_name);
196struct PoolSettings
final {
212 bool operator==(
const PoolSettings& rhs)
const {
220struct PoolSettingsDynamic
final {
221 std::optional<std::size_t> min_size;
222 std::optional<std::size_t> max_size;
223 std::optional<std::size_t> max_queue_size;
224 std::optional<std::size_t> connecting_limit;
225 std::optional<std::size_t> connecting_interval_ms;
246 enum PreparedStatementOptions {
247 kCachePreparedStatements,
248 kNoPreparedStatements,
250 enum UserTypesOptions {
253 kPredefinedTypesOnly,
255 enum CheckQueryParamsOptions {
259 enum DiscardOnConnectOptions {
263 enum StatementLogMode {
267 using SettingsVersion = std::size_t;
291 std::optional<std::chrono::seconds>
max_ttl{};
299 bool deadline_propagation_enabled =
true;
304 std::optional<std::string> application_name{};
320struct ConnectionSettingsDynamic
final {
323 std::optional<std::size_t> max_prepared_cache_size{};
324 std::optional<std::size_t> recent_errors_threshold{};
325 std::optional<
ConnectionSettings::CheckQueryParamsOptions> ignore_unused_query_params{};
326 std::optional<std::chrono::seconds> max_ttl{};
328 std::optional<
bool> deadline_propagation_enabled{};
334struct StatementMetricsSettings
final {
347enum class ConnlimitMode {