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)
142 size_t Value()
const {
return value_; }
152 explicit Limit(size_t value)
156 size_t Value()
const {
return value_; }
172 Projection(std::initializer_list<std::string_view> fields_to_include);
202 const bson_t* GetProjectionBson()
const;
206 formats::
bson::impl::BsonBuilder projection_builder_;
221 Sort(std::initializer_list<std::pair<std::string_view, Direction>>);
224 Sort&
By(std::string_view field, Direction direction);
228 const bson_t* GetSortBson()
const;
232 formats::
bson::impl::BsonBuilder sort_builder_;
240 explicit Hint(std::string index_name);
247 const formats::
bson::
Value& Value()
const;
265 typename = std::enable_if_t<
266 std::is_convertible_v<
typename std::iterator_traits<Iterator>::value_type, formats::
bson::
Document>>>
269 for (
auto it = first; it != last; ++it) {
277 const formats::
bson::
Value& Value()
const;
299 explicit Comment(std::string);
301 const std::string& Value()
const;
311 explicit MaxServerTime(
const std::chrono::milliseconds& value)
315 const std::chrono::milliseconds& Value()
const {
return value_; }
318 std::chrono::milliseconds value_;
324class Collation
final {
399 const bson_t* GetCollationBson()
const;
403 formats::
bson::impl::BsonBuilder collation_builder_;