6#include <userver/formats/bson/document.hpp> 
    7#include <userver/formats/bson/value.hpp> 
    8#include <userver/storages/mongo/options.hpp> 
    9#include <userver/utils/fast_pimpl.hpp> 
   11USERVER_NAMESPACE_BEGIN
 
   13namespace storages::mongo::impl::cdriver {
 
   14class CDriverCollectionImpl;
 
   27  Count(
Count&&) 
noexcept;
 
   40  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
   43  static constexpr size_t kSize = 96;
 
   44  static constexpr size_t kAlignment = 8;
 
   46  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
   68  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
   71  static constexpr size_t kSize = 72;
 
   72  static constexpr size_t kAlignment = 8;
 
   74  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
   84  Find(
Find&&) 
noexcept;
 
  102  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  105  static constexpr size_t kSize = 96;
 
  106  static constexpr size_t kAlignment = 8;
 
  108  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  127  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  130  static constexpr size_t kSize = 80;
 
  131  static constexpr size_t kAlignment = 8;
 
  133  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  140  explicit InsertMany(std::vector<formats::bson::Document> documents);
 
  156  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  159  static constexpr size_t kSize = 88;
 
  160  static constexpr size_t kAlignment = 8;
 
  162  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  183  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  186  static constexpr size_t kSize = 96;
 
  187  static constexpr size_t kAlignment = 8;
 
  189  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  195  enum class Mode { kSingle, kMulti };
 
  202  Update(
Update&&) 
noexcept;
 
  217  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  220  static constexpr size_t kSize = 96;
 
  221  static constexpr size_t kAlignment = 8;
 
  223  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  229  enum class Mode { kSingle, kMulti };
 
  235  Delete(
Delete&&) 
noexcept;
 
  244  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  247  static constexpr size_t kSize = 80;
 
  248  static constexpr size_t kAlignment = 8;
 
  250  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  276  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  279  static constexpr size_t kSize = 80;
 
  280  static constexpr size_t kAlignment = 8;
 
  282  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  303  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  306  static constexpr size_t kSize = 72;
 
  307  static constexpr size_t kAlignment = 8;
 
  309  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  315  explicit Aggregate(formats::
bson::
Value pipeline);
 
  333  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  336  static constexpr size_t kSize = 120;
 
  337  static constexpr size_t kAlignment = 8;
 
  339  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;
 
  348  Drop(
Drop&&) 
noexcept;
 
  356  friend class storages::mongo::impl::cdriver::CDriverCollectionImpl;
 
  359  static constexpr size_t kSize = 56;
 
  360  static constexpr size_t kAlignment = 8;
 
  362  utils::FastPimpl<Impl, kSize, kAlignment, 
false> impl_;