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;
70 constexpr explicit TransactionOptions(
Mode m) : mode{m} {}
72 bool IsReadOnly()
const {
return mode & kReadOnly; }
116 enum class PreparedStatementsOptionOverride { kNoOverride, kEnabled, kDisabled };
118 PreparedStatementsOptionOverride prepared_statements_enabled{PreparedStatementsOptionOverride::kNoOverride};
120 constexpr CommandControl(
121 TimeoutDuration network_timeout_ms,
122 TimeoutDuration statement_timeout_ms,
123 PreparedStatementsOptionOverride prepared_statements_enabled = PreparedStatementsOptionOverride::kNoOverride
127 prepared_statements_enabled(prepared_statements_enabled) {}
135 prepared_statements_enabled == rhs.prepared_statements_enabled;
138 bool operator!=(
const CommandControl& rhs)
const {
return !(*
this == rhs); }
144using CommandControlByMethodMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
145using CommandControlByHandlerMap =
146 USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string, CommandControlByMethodMap>;
147using CommandControlByQueryMap = USERVER_NAMESPACE::
utils::impl::TransparentMap<std::string,
CommandControl>;
149OptionalCommandControl
150GetHandlerOptionalCommandControl(
const CommandControlByHandlerMap& map, std::string_view path, std::string_view method);
152OptionalCommandControl GetQueryOptionalCommandControl(
const CommandControlByQueryMap& map, std::string_view query_name);
184struct PoolSettings
final {
197 bool operator==(
const PoolSettings& rhs)
const {
205struct PoolSettingsDynamic
final {
206 std::optional<std::size_t> min_size;
207 std::optional<std::size_t> max_size;
208 std::optional<std::size_t> max_queue_size;
209 std::optional<std::size_t> connecting_limit;
230 enum PreparedStatementOptions {
231 kCachePreparedStatements,
232 kNoPreparedStatements,
234 enum UserTypesOptions {
237 kPredefinedTypesOnly,
239 enum CheckQueryParamsOptions {
243 enum DiscardOnConnectOptions {
247 enum StatementLogMode {
251 using SettingsVersion = std::size_t;
275 std::optional<std::chrono::seconds>
max_ttl{};
283 bool deadline_propagation_enabled =
true;
304struct ConnectionSettingsDynamic
final {
307 std::optional<std::size_t> max_prepared_cache_size{};
308 std::optional<std::size_t> recent_errors_threshold{};
309 std::optional<
ConnectionSettings::CheckQueryParamsOptions> ignore_unused_query_params{};
310 std::optional<std::chrono::seconds> max_ttl{};
312 std::optional<
bool> deadline_propagation_enabled{};
318struct StatementMetricsSettings
final {
331enum class ConnlimitMode {