11#include <unordered_map>
13#include <userver/congestion_control/controllers/linear.hpp>
14#include <userver/storages/postgres/postgres_fwd.hpp>
15#include <userver/utils/impl/transparent_hash.hpp>
16#include <userver/utils/str_icase.hpp>
17#include <userver/utils/string_literal.hpp>
19USERVER_NAMESPACE_BEGIN
64 Mode mode = kReadWrite;
66 constexpr TransactionOptions() =
default;
69 constexpr explicit TransactionOptions(
Mode m) : mode{m} {}
71 bool IsReadOnly()
const {
return mode & kReadOnly; }
115 enum class PreparedStatementsOptionOverride { kNoOverride, kEnabled, kDisabled };
117 PreparedStatementsOptionOverride prepared_statements_enabled{PreparedStatementsOptionOverride::kNoOverride};
119 constexpr CommandControl(
120 TimeoutDuration network_timeout_ms,
121 TimeoutDuration statement_timeout_ms,
122 PreparedStatementsOptionOverride prepared_statements_enabled = PreparedStatementsOptionOverride::kNoOverride
126 prepared_statements_enabled(prepared_statements_enabled) {}
134 prepared_statements_enabled == rhs.prepared_statements_enabled;
137 bool operator!=(
const CommandControl& rhs)
const {
return !(*
this == rhs); }
143using CommandControlByMethodMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
144using CommandControlByHandlerMap =
145 USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string, CommandControlByMethodMap>;
146using CommandControlByQueryMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
148OptionalCommandControl
149GetHandlerOptionalCommandControl(
const CommandControlByHandlerMap& map, std::string_view path, std::string_view method);
151OptionalCommandControl GetQueryOptionalCommandControl(
const CommandControlByQueryMap& map, std::string_view query_name);
183struct PoolSettings
final {
196 bool operator==(
const PoolSettings& rhs)
const {
204struct PoolSettingsDynamic
final {
205 std::optional<std::size_t> min_size;
206 std::optional<std::size_t> max_size;
207 std::optional<std::size_t> max_queue_size;
208 std::optional<std::size_t> connecting_limit;
229 enum PreparedStatementOptions {
230 kCachePreparedStatements,
231 kNoPreparedStatements,
233 enum UserTypesOptions {
236 kPredefinedTypesOnly,
238 enum CheckQueryParamsOptions {
242 enum DiscardOnConnectOptions {
246 enum StatementLogMode {
250 using SettingsVersion = std::size_t;
274 std::optional<std::chrono::seconds>
max_ttl{};
282 bool deadline_propagation_enabled =
true;
303struct ConnectionSettingsDynamic
final {
306 std::optional<std::size_t> max_prepared_cache_size{};
307 std::optional<std::size_t> recent_errors_threshold{};
308 std::optional<
ConnectionSettings::CheckQueryParamsOptions> ignore_unused_query_params{};
309 std::optional<std::chrono::seconds> max_ttl{};
311 std::optional<
bool> deadline_propagation_enabled{};
317struct StatementMetricsSettings
final {
330enum class ConnlimitMode {