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);
193struct PoolSettings
final {
206 bool operator==(
const PoolSettings& rhs)
const {
214struct PoolSettingsDynamic
final {
215 std::optional<std::size_t> min_size;
216 std::optional<std::size_t> max_size;
217 std::optional<std::size_t> max_queue_size;
218 std::optional<std::size_t> connecting_limit;
239 enum PreparedStatementOptions {
240 kCachePreparedStatements,
241 kNoPreparedStatements,
243 enum UserTypesOptions {
246 kPredefinedTypesOnly,
248 enum CheckQueryParamsOptions {
252 enum DiscardOnConnectOptions {
256 enum StatementLogMode {
260 using SettingsVersion = std::size_t;
284 std::optional<std::chrono::seconds>
max_ttl{};
292 bool deadline_propagation_enabled =
true;
297 std::optional<std::string> application_name{};
313struct ConnectionSettingsDynamic
final {
316 std::optional<std::size_t> max_prepared_cache_size{};
317 std::optional<std::size_t> recent_errors_threshold{};
318 std::optional<
ConnectionSettings::CheckQueryParamsOptions> ignore_unused_query_params{};
319 std::optional<std::chrono::seconds> max_ttl{};
321 std::optional<
bool> deadline_propagation_enabled{};
327struct StatementMetricsSettings
final {
340enum class ConnlimitMode {