From 30664fbe45970add798e0e5b115c20383974b09f Mon Sep 17 00:00:00 2001 From: sahankj2000 Date: Fri, 5 Jul 2024 09:38:33 +0530 Subject: [PATCH] Adding filters --- .../opdispensers/DataApiOpDispenser.java | 58 ++++++++++++------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java index 466cfdc36..b7d4a1496 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java @@ -64,28 +64,10 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser orFilterList = new ArrayList<>(); for (Map filterFields : filters) { switch ((String)filterFields.get("conjunction")) { - case "and" -> { - switch (filterFields.get("operator").toString()) { - case "lt" -> - andFilterList.add(Filters.lt(filterFields.get("field").toString(), (long) 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"); - } - } + case "and" -> + addOperatorFilter(andFilterList, filterFields.get("operator").toString(), filterFields.get("field").toString(), filterFields.get("value")); + case "or" -> + addOperatorFilter(orFilterList, filterFields.get("operator").toString(), filterFields.get("field").toString(), filterFields.get("value")); default -> logger.error(() -> "Conjunction " + filterFields.get("conjunction") + " not supported"); } } @@ -97,6 +79,38 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser 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) { Update update = new Update(); Optional> updatesFunction = op.getAsOptionalFunction("updates", Map.class);