10#include <userver/utils/string_literal.hpp>
11#include <userver/utils/strong_typedef.hpp>
13USERVER_NAMESPACE_BEGIN
39 NameLiteral() =
delete;
41#if defined(__clang__
) && __clang_major__
< 18
45 USERVER_IMPL_CONSTEVAL
47 NameLiteral(
const char* literal)
noexcept
60 Query(
const Query& other) =
default;
61 Query(
Query&& other) =
default;
62 Query& operator=(
const Query& other) =
default;
67 : data_{StaticStrings{statement, name}}, log_mode_{log_mode} {}
69 Query(
const char* statement, std::optional<Name> name = std::nullopt,
LogMode log_mode =
LogMode::kFull)
70 :
Query(std::string{statement}, std::move(name), log_mode) {}
71 Query(std::string statement, std::optional<Name> name = std::nullopt,
LogMode log_mode =
LogMode::kFull)
72 : data_{DynamicStrings{std::move(statement), std::move(name)}}, log_mode_(log_mode) {}
87 struct DynamicStrings {
88 std::string statement_;
89 std::optional<Name> name_;
91 struct StaticStrings {
95 struct NameViewVisitor;
97 std::variant<StaticStrings, DynamicStrings> data_ = StaticStrings{
utils::
StringLiteral{
""}, std::nullopt};