9#include <initializer_list>
16#include <userver/formats/bson/bson_builder.hpp>
17#include <userver/formats/bson/document.hpp>
18#include <userver/formats/bson/value.hpp>
19#include <userver/formats/bson/value_builder.hpp>
20#include <userver/formats/common/type.hpp>
22USERVER_NAMESPACE_BEGIN
46 explicit ReadPreference(
Mode mode);
50 std::optional<std::chrono::seconds> GetMaxStaleness()
const;
51 const std::vector<formats::
bson::
Document>& GetTags()
const;
63 std::optional<std::chrono::seconds> max_staleness_;
103 bool IsMajority()
const;
104 size_t NodesCount()
const;
105 const std::string& Tag()
const;
106 std::optional<
bool> Journal()
const;
107 const std::chrono::milliseconds& Timeout()
const;
118 std::optional<
bool> journal_;
120 std::chrono::milliseconds timeout_;
138 explicit Skip(size_t value) : value_(value) {}
140 size_t Value()
const {
return value_; }
149 explicit Limit(size_t value) : value_(value) {}
151 size_t Value()
const {
return value_; }
167 Projection(std::initializer_list<std::string_view> fields_to_include);
197 const bson_t* GetProjectionBson()
const;
201 formats::
bson::impl::BsonBuilder projection_builder_;
216 Sort(std::initializer_list<std::pair<std::string_view, Direction>>);
219 Sort&
By(std::string_view field, Direction direction);
223 const bson_t* GetSortBson()
const;
227 formats::
bson::impl::BsonBuilder sort_builder_;
235 explicit Hint(std::string index_name);
242 const formats::
bson::
Value& Value()
const;
260 typename = std::enable_if_t<
261 std::is_convertible_v<
typename std::iterator_traits<Iterator>::value_type, formats::
bson::
Document>>>
264 for (
auto it = first; it != last; ++it) {
272 const formats::
bson::
Value& Value()
const;
294 explicit Comment(std::string);
296 const std::string& Value()
const;
306 explicit MaxServerTime(
const std::chrono::milliseconds& value) : value_(value) {}
308 const std::chrono::milliseconds& Value()
const {
return value_; }
311 std::chrono::milliseconds value_;
317class Collation
final {
392 const bson_t* GetCollationBson()
const;
396 formats::
bson::impl::BsonBuilder collation_builder_;