mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
Adding filters
This commit is contained in:
parent
b7e0f35cd2
commit
30664fbe45
@ -64,28 +64,10 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser<DataApiBaseOp,
|
|||||||
List<Filter> orFilterList = new ArrayList<>();
|
List<Filter> orFilterList = new ArrayList<>();
|
||||||
for (Map<String,Object> filterFields : filters) {
|
for (Map<String,Object> filterFields : filters) {
|
||||||
switch ((String)filterFields.get("conjunction")) {
|
switch ((String)filterFields.get("conjunction")) {
|
||||||
case "and" -> {
|
case "and" ->
|
||||||
switch (filterFields.get("operator").toString()) {
|
addOperatorFilter(andFilterList, filterFields.get("operator").toString(), filterFields.get("field").toString(), filterFields.get("value"));
|
||||||
case "lt" ->
|
case "or" ->
|
||||||
andFilterList.add(Filters.lt(filterFields.get("field").toString(), (long) filterFields.get("value")));
|
addOperatorFilter(orFilterList, filterFields.get("operator").toString(), filterFields.get("field").toString(), filterFields.get("value"));
|
||||||
case "gt" ->
|
|
||||||
andFilterList.add(Filters.gt(filterFields.get("field").toString(), (long) filterFields.get("value")));
|
|
||||||
case "eq" ->
|
|
||||||
andFilterList.add(Filters.eq(filterFields.get("field").toString(), filterFields.get("value")));
|
|
||||||
default -> logger.error(() -> "Operation " + filterFields.get("operator") + " not supported");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case "or" -> {
|
|
||||||
switch (filterFields.get("operator").toString()) {
|
|
||||||
case "lt" ->
|
|
||||||
orFilterList.add(Filters.lt(filterFields.get("field").toString(), (long) filterFields.get("value")));
|
|
||||||
case "gt" ->
|
|
||||||
orFilterList.add(Filters.gt(filterFields.get("field").toString(), (long) filterFields.get("value")));
|
|
||||||
case "eq" ->
|
|
||||||
orFilterList.add(Filters.eq(filterFields.get("field").toString(), filterFields.get("value")));
|
|
||||||
default -> logger.error(() -> "Operation " + filterFields.get("operator") + " not supported");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default -> logger.error(() -> "Conjunction " + filterFields.get("conjunction") + " not supported");
|
default -> logger.error(() -> "Conjunction " + filterFields.get("conjunction") + " not supported");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,6 +79,38 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser<DataApiBaseOp,
|
|||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void addOperatorFilter(List<Filter> filtersList, String operator, String fieldName, Object fieldValue) {
|
||||||
|
switch (operator) {
|
||||||
|
case "all" ->
|
||||||
|
filtersList.add(Filters.all(fieldName, fieldValue));
|
||||||
|
case "eq" ->
|
||||||
|
filtersList.add(Filters.eq(fieldName, fieldValue));
|
||||||
|
case "exists" -> {
|
||||||
|
if (fieldValue != null) {
|
||||||
|
logger.warn(() -> "'exists' operator does not support value field");
|
||||||
|
}
|
||||||
|
filtersList.add(Filters.exists(fieldName));
|
||||||
|
}
|
||||||
|
case "gt" ->
|
||||||
|
filtersList.add(Filters.gt(fieldName, (long) fieldValue));
|
||||||
|
case "gte" ->
|
||||||
|
filtersList.add(Filters.gte(fieldName, (long) fieldValue));
|
||||||
|
case "hasSize" ->
|
||||||
|
filtersList.add(Filters.hasSize(fieldName, (int) fieldValue));
|
||||||
|
case "in" ->
|
||||||
|
filtersList.add(Filters.in(fieldName, fieldValue));
|
||||||
|
case "lt" ->
|
||||||
|
filtersList.add(Filters.lt(fieldName, (long) fieldValue));
|
||||||
|
case "lte" ->
|
||||||
|
filtersList.add(Filters.lte(fieldName, (long) fieldValue));
|
||||||
|
case "ne" ->
|
||||||
|
filtersList.add(Filters.ne(fieldName, fieldValue));
|
||||||
|
case "nin" ->
|
||||||
|
filtersList.add(Filters.nin(fieldName, fieldValue));
|
||||||
|
default -> logger.error(() -> "Operation '" + operator + "' not supported");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected Update getUpdates(ParsedOp op, long l) {
|
protected Update getUpdates(ParsedOp op, long l) {
|
||||||
Update update = new Update();
|
Update update = new Update();
|
||||||
Optional<LongFunction<Map>> updatesFunction = op.getAsOptionalFunction("updates", Map.class);
|
Optional<LongFunction<Map>> updatesFunction = op.getAsOptionalFunction("updates", Map.class);
|
||||||
|
Loading…
Reference in New Issue
Block a user