43class QueryQueue
final {
45 QueryQueue(
CommandControl default_cc, detail::ConnectionPtr&& conn);
47 QueryQueue(QueryQueue&&)
noexcept;
48 QueryQueue& operator=(QueryQueue&&)
noexcept;
50 QueryQueue(
const QueryQueue&) =
delete;
51 QueryQueue& operator=(
const QueryQueue&) =
delete;
62 template <
typename... Args>
67 template <
typename... Args>
68 void Push(
const Query& query,
const Args&... args);
84 struct ParamsHolder
final {
87 USERVER_NAMESPACE::
utils::AnyMovable any_params
{};
89 detail::QueryParameters params_proxy;
92 const UserTypes& GetConnectionUserTypes()
const;
94 void DoPush(
CommandControl cc,
const Query& query, ParamsHolder&& params);
96 void ValidateUsage()
const;
99 detail::ConnectionPtr conn_;
101 struct QueriesStorage;
102 USERVER_NAMESPACE::
utils::FastPimpl<QueriesStorage, 48, 8> queries_storage_;
107 ParamsHolder holder{};
108 auto& params = holder.any_params.Emplace<detail::StaticQueryParameters<
sizeof...(args)>>();
109 params.Write(GetConnectionUserTypes(), args...);
110 holder.params_proxy = detail::QueryParameters{params};
111 DoPush(cc, query, std::move(holder));