6#include <userver/storages/mongo/bulk_ops.hpp>
7#include <userver/storages/mongo/options.hpp>
8#include <userver/utils/fast_pimpl.hpp>
10USERVER_NAMESPACE_BEGIN
12namespace storages::mongo::impl::cdriver {
13class CDriverCollectionImpl;
14class CDriverTransactionCollectionImpl;
22 enum class Mode { kOrdered, kUnordered };
27 Bulk(
const Bulk&) =
delete;
28 Bulk(
Bulk&&)
noexcept;
29 Bulk& operator=(
const Bulk&) =
delete;
39 template <
typename... Options>
44 template <
typename... Options>
49 template <
typename... Options>
54 template <
typename... Options>
58 template <
typename... Options>
62 template <
typename... Options>
74 friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
75 friend class storages::mongo::impl::cdriver::CDriverTransactionCollectionImpl;
78 static constexpr size_t kSize = 56;
79 static constexpr size_t kAlignment = 8;
81 utils::FastPimpl<Impl, kSize, kAlignment,
false> impl_;
84template <
typename... Options>
87 (insert_subop.SetOption(std::forward<Options>(options)), ...);
91template <
typename... Options>
94 (replace_subop.SetOption(std::forward<Options>(options)), ...);
95 Append(replace_subop);
98template <
typename... Options>
101 (update_subop.SetOption(std::forward<Options>(options)), ...);
102 Append(update_subop);
105template <
typename... Options>
108 (update_subop.SetOption(std::forward<Options>(options)), ...);
109 Append(update_subop);
112template <
typename... Options>
115 (delete_subop
.SetOption(std::forward<Options>(options)
), ...);
116 Append(delete_subop);
119template <
typename... Options>
122 (delete_subop
.SetOption(std::forward<Options>(options)
), ...);
123 Append(delete_subop);