|
|
@@ -293,16 +293,11 @@ public:
|
|
|
request.set_collection(collection);
|
|
|
|
|
|
// Set filters
|
|
|
- for (const auto& [field, value] : options.filters) {
|
|
|
- auto* filter = request.add_filters();
|
|
|
- filter->set_field(field);
|
|
|
- filter->set_value(value.dump());
|
|
|
- // Use SEARCH op for _search field, EQ for others
|
|
|
- if (field == "_search") {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_SEARCH);
|
|
|
- } else {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_EQ);
|
|
|
- }
|
|
|
+ for (const auto& filter : options.filters) {
|
|
|
+ auto* pb = request.add_filters();
|
|
|
+ pb->set_field(filter.field);
|
|
|
+ pb->set_value(filter.value.dump());
|
|
|
+ pb->set_op(static_cast<smartbotic::databasepb::FilterOp>(filter.op));
|
|
|
}
|
|
|
|
|
|
// Set sorting
|
|
|
@@ -348,15 +343,11 @@ public:
|
|
|
request.set_collection(collection);
|
|
|
|
|
|
// Set filters
|
|
|
- for (const auto& [field, value] : options.filters) {
|
|
|
- auto* filter = request.add_filters();
|
|
|
- filter->set_field(field);
|
|
|
- filter->set_value(value.dump());
|
|
|
- if (field == "_search") {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_SEARCH);
|
|
|
- } else {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_EQ);
|
|
|
- }
|
|
|
+ for (const auto& filter : options.filters) {
|
|
|
+ auto* pb = request.add_filters();
|
|
|
+ pb->set_field(filter.field);
|
|
|
+ pb->set_value(filter.value.dump());
|
|
|
+ pb->set_op(static_cast<smartbotic::databasepb::FilterOp>(filter.op));
|
|
|
}
|
|
|
|
|
|
// Set sorting
|
|
|
@@ -405,20 +396,15 @@ public:
|
|
|
}
|
|
|
|
|
|
uint64_t count(const std::string& collection,
|
|
|
- const std::vector<std::pair<std::string, nlohmann::json>>& filters) {
|
|
|
+ const std::vector<Client::Filter>& filters) {
|
|
|
smartbotic::databasepb::CountRequest request;
|
|
|
request.set_collection(collection);
|
|
|
|
|
|
- for (const auto& [field, value] : filters) {
|
|
|
- auto* filter = request.add_filters();
|
|
|
- filter->set_field(field);
|
|
|
- filter->set_value(value.dump());
|
|
|
- // Use SEARCH op for _search field, EQ for others
|
|
|
- if (field == "_search") {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_SEARCH);
|
|
|
- } else {
|
|
|
- filter->set_op(smartbotic::databasepb::FILTER_OP_EQ);
|
|
|
- }
|
|
|
+ for (const auto& filter : filters) {
|
|
|
+ auto* pb = request.add_filters();
|
|
|
+ pb->set_field(filter.field);
|
|
|
+ pb->set_value(filter.value.dump());
|
|
|
+ pb->set_op(static_cast<smartbotic::databasepb::FilterOp>(filter.op));
|
|
|
}
|
|
|
|
|
|
smartbotic::databasepb::CountResponse response;
|
|
|
@@ -1201,7 +1187,7 @@ Client::FindResult Client::findWithMetrics(const std::string& collection,
|
|
|
}
|
|
|
|
|
|
uint64_t Client::count(const std::string& collection,
|
|
|
- const std::vector<std::pair<std::string, nlohmann::json>>& filters) {
|
|
|
+ const std::vector<Filter>& filters) {
|
|
|
return impl_->count(collection, filters);
|
|
|
}
|
|
|
|