7#include <userver/storages/redis/base.hpp>
8#include <userver/storages/redis/command_control.hpp>
9#include <userver/storages/redis/exception.hpp>
10#include <userver/storages/redis/scan_tag.hpp>
12USERVER_NAMESPACE_BEGIN
14namespace storages::
redis {
22 std::optional<size_t> offset;
23 std::optional<size_t> count;
33 enum class Sort { kNone, kAsc, kDesc };
34 enum class Unit { kM, kKm, kMi, kFt };
37 bool withcoord =
false;
38 bool withdist =
false;
39 bool withhash =
false;
41 Sort sort = Sort::kNone;
45 enum class Sort { kNone, kAsc, kDesc };
46 enum class Unit { kM, kKm, kMi, kFt };
49 bool withcoord =
false;
50 bool withdist =
false;
51 bool withhash =
false;
53 Sort sort = Sort::kNone;
57 enum class Exist { kAddAlways, kAddIfNotExist, kAddIfExist };
58 enum class Compare { kNone, kGreaterThan, kLessThan };
59 enum class ReturnValue { kAddedCount, kChangedCount };
61 ZaddOptions() =
default;
62 constexpr ZaddOptions(
64 ReturnValue return_value = ReturnValue::kAddedCount,
65 Compare compare = Compare::kNone
67 : exist(exist), compare(compare), return_value(return_value) {}
68 constexpr ZaddOptions(Exist exist, Compare compare, ReturnValue return_value = ReturnValue::kAddedCount)
69 : exist(exist), compare(compare), return_value(return_value) {}
71 constexpr ZaddOptions(ReturnValue return_value, Exist exist = Exist::kAddAlways, Compare compare = Compare::kNone)
72 : exist(exist), compare(compare), return_value(return_value) {}
73 constexpr ZaddOptions(ReturnValue return_value, Compare compare, Exist exist = Exist::kAddAlways)
74 : exist(exist), compare(compare), return_value(return_value) {}
76 constexpr ZaddOptions(
78 Exist exist = Exist::kAddAlways,
79 ReturnValue return_value = ReturnValue::kAddedCount
81 : exist(exist), compare(compare), return_value(return_value) {}
82 constexpr ZaddOptions(Compare compare, ReturnValue return_value, Exist exist = Exist::kAddAlways)
83 : exist(exist), compare(compare), return_value(return_value) {}
85 Exist exist = Exist::kAddAlways;
86 Compare compare = Compare::kNone;
87 ReturnValue return_value = ReturnValue::kAddedCount;
91 return {exist, return_value};
96 return {compare, return_value};
99 return {return_value, exist};
102 return {return_value, compare};
107 ScanOptionsBase() =
default;
113 template <
typename... Args>
114 ScanOptionsBase(Args&&... args) {
115 (Apply(std::forward<Args>(args)), ...);
120 explicit Match(std::string value) : value_(std::move(value)) {}
122 const std::string& Get()
const& {
return value_; }
124 std::string Get() && {
return std::move(value_); }
132 explicit Count(size_t value) : value_(value) {}
134 size_t Get()
const {
return value_; }
140 std::optional<
Match> ExtractMatch() {
return std::move(pattern_); }
142 std::optional<
Count> ExtractCount() {
return std::move(count_); }
145 void Apply(
Match pattern) {
147 pattern_ = std::move(pattern);
150 void Apply(
Count count) {
155 std::optional<
Match> pattern_;
156 std::optional<
Count> count_;
171 enum class Exist { kSetAlways, kSetIfNotExist, kSetIfExist };
174 int milliseconds = 0;
175 Exist exist = Exist::kSetAlways;
179 bool withscores =
false;