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;
146 bool operator!=(
const CommandControl& rhs)
const {
return !(*
this == rhs); }
152using CommandControlByMethodMap = USERVER_NAMESPACE::utils::
impl::TransparentMap<std::string,
CommandControl>;
153using CommandControlByHandlerMap =
154 USERVER_NAMESPACE::utils::
impl::TransparentMap<std::string, CommandControlByMethodMap>;
155using CommandControlByQueryMap = USERVER_NAMESPACE::utils::
impl::TransparentMap<std::string,
CommandControl>;
157OptionalCommandControl GetHandlerOptionalCommandControl(
158 const CommandControlByHandlerMap& map,
159 std::string_view path,
160 std::string_view method
163OptionalCommandControl GetQueryOptionalCommandControl(
const CommandControlByQueryMap& map, std::string_view query_name);
195struct PoolSettings
final {
208 bool operator==(
const PoolSettings& rhs)
const {
216struct PoolSettingsDynamic
final {
217 std::optional<std::size_t> min_size;
218 std::optional<std::size_t> max_size;
219 std::optional<std::size_t> max_queue_size;
220 std::optional<std::size_t> connecting_limit;
241 enum PreparedStatementOptions {
242 kCachePreparedStatements,
243 kNoPreparedStatements,
245 enum UserTypesOptions {
248 kPredefinedTypesOnly,
250 enum CheckQueryParamsOptions {
254 enum DiscardOnConnectOptions {
258 enum StatementLogMode {
262 using SettingsVersion = std::size_t;
286 std::optional<std::chrono::seconds>
max_ttl{};
294 bool deadline_propagation_enabled =
true;
315struct ConnectionSettingsDynamic
final {
318 std::optional<std::size_t> max_prepared_cache_size{};
319 std::optional<std::size_t> recent_errors_threshold{};
320 std::optional<
ConnectionSettings::CheckQueryParamsOptions> ignore_unused_query_params{};
321 std::optional<std::chrono::seconds> max_ttl{};
323 std::optional<
bool> deadline_propagation_enabled{};
329struct StatementMetricsSettings
final {
342enum class ConnlimitMode {