27#ifndef ANNADB_DRIVER_QUERY_COMPARISION_HPP
28#define ANNADB_DRIVER_QUERY_COMPARISION_HPP
60 [[nodiscard]]
virtual std::string to_string()
62 std::stringstream sstream;
63 sstream << name_ <<
"{";
71 sstream <<
"value|" << field_ <<
"|: ";
74 sstream << value_ <<
"}";
78 friend std::ostream &operator<<(std::ostream &out,
Comparison &obj)
80 return out << obj.to_string();
89 field_(field), name_(name)
93 field_(std::move(field)), name_(name)
96 template<std::convertible_to<tyson::TySonObject> T>
98 Comparison(T value, std::string_view name) : value_(std::forward<tyson::TySonObject>(value)), field_(
"root"),
118 return ComparisonType::EQ;
120 else if (name_ ==
"neq")
122 return ComparisonType::NEQ;
124 else if (name_ ==
"gt")
126 return ComparisonType::GT;
128 else if (name_ ==
"gte")
130 return ComparisonType::GTE;
132 else if (name_ ==
"lt")
134 return ComparisonType::LT;
136 else if (name_ ==
"lte")
138 return ComparisonType::LTE;
140 else if (name_ ==
"and")
142 return ComparisonType::AND;
144 else if (name_ ==
"or")
146 return ComparisonType::OR;
150 return ComparisonType::NOT;
232 std::vector<Comparison> compares_{};
234 [[nodiscard]] std::string to_string()
override
236 std::stringstream sstream;
239 std::for_each(compares_.begin(), compares_.end(), [&sstream](
Comparison &val) { sstream << val <<
","; });
241 return sstream.str();
249 template<std::convertible_to<Comparison> ...Comps>
252 compares_.reserve(
sizeof ...(comps));
253 (compares_.emplace_back(comps), ...);
262 std::vector<Comparison> compares_{};
264 [[nodiscard]] std::string to_string()
override
266 std::stringstream sstream;
269 std::for_each(compares_.begin(), compares_.end(), [&sstream](
Comparison &val) { sstream << val <<
","; });
271 return sstream.str();
279 template<std::convertible_to<Comparison> ...Comps>
282 compares_.reserve(
sizeof ...(comps));
283 (compares_.emplace_back(comps), ...);
292 [[nodiscard]] std::string to_string()
override
294 return name_ +
"(value|" + field_ +
"|)";
298 explicit Not(std::string_view field) :
Comparison(field,
"not")
Definition: query_comparision.hpp:231
And(Comps ...comps)
Definition: query_comparision.hpp:250
Definition: query_comparision.hpp:57
Definition: query_comparision.hpp:159
Definition: query_comparision.hpp:183
Definition: query_comparision.hpp:195
Definition: query_comparision.hpp:207
Definition: query_comparision.hpp:219
Definition: query_comparision.hpp:171
Definition: query_comparision.hpp:291
Definition: query_comparision.hpp:261
Or(Comps ...comps)
Definition: query_comparision.hpp:280
static TySonObject Null() noexcept
Definition: TySON.hpp:402
ComparisonType
Definition: query_comparision.hpp:41