8#include <userver/engine/task/task_processor_fwd.hpp>
9#include <userver/utils/statistics/writer.hpp>
11#include <userver/storages/sqlite/cursor_result_set.hpp>
12#include <userver/storages/sqlite/impl/binder_help.hpp>
13#include <userver/storages/sqlite/infra/connection_ptr.hpp>
14#include <userver/storages/sqlite/operation_types.hpp>
15#include <userver/storages/sqlite/options.hpp>
16#include <userver/storages/sqlite/query.hpp>
17#include <userver/storages/sqlite/result_set.hpp>
18#include <userver/storages/sqlite/savepoint.hpp>
19#include <userver/storages/sqlite/sqlite_fwd.hpp>
20#include <userver/storages/sqlite/transaction.hpp>
22USERVER_NAMESPACE_BEGIN
24namespace storages::sqlite {
50 template <
typename... Args>
78 template <
typename Container>
109 template <
typename T,
typename... Args>
112 std::size_t batch_size,
123 ResultSet DoExecute(impl::io::ParamsBinderBase& params, std::shared_ptr<infra::
ConnectionPtr> connection)
const;
127 void AccountQueryExecute(std::shared_ptr<infra::
ConnectionPtr> connection)
const noexcept;
128 void AccountQueryFailed(std::shared_ptr<infra::
ConnectionPtr> connection)
const noexcept;
130 impl::ClientImplPtr pimpl_;
133template <
typename... Args>
135 auto connection = GetConnection(operation_type);
136 AccountQueryExecute(connection);
138 auto params_binder = impl::BindHelper::UpdateParamsBindings(query, *connection, args...);
139 return DoExecute(params_binder, connection);
140 }
catch (
const std::exception& err) {
141 AccountQueryFailed(connection);
148 auto connection = GetConnection(operation_type);
149 AccountQueryExecute(connection);
151 auto params_binder = impl::BindHelper::UpdateRowAsParamsBindings(query, *connection, row);
152 return DoExecute(params_binder, connection);
153 }
catch (
const std::exception& err) {
154 AccountQueryFailed(connection);
159template <
typename Container>
161 auto connection = GetConnection(operation_type);
162 for (
const auto& row : params) {
163 AccountQueryExecute(connection);
165 auto params_binder = impl::BindHelper::UpdateRowAsParamsBindings(query, *connection, row);
166 DoExecute(params_binder, connection);
167 }
catch (
const std::exception& err) {
168 AccountQueryFailed(connection);
174template <
typename T,
typename... Args>
177 std::size_t batch_size,
181 auto connection = GetConnection(operation_type);
182 AccountQueryExecute(connection);
184 auto params_binder = impl::BindHelper::UpdateParamsBindings(query, *connection, args...);
185 return CursorResultSet<T>{DoExecute(params_binder, connection), batch_size};
186 }
catch (
const std::exception& err) {
187 AccountQueryFailed(connection);