jsinovassin commented on code in PR #659: URL: https://github.com/apache/unomi/pull/659#discussion_r1579458066
########## plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionESQueryBuilder.java: ########## @@ -131,35 +131,77 @@ private Condition getProfileIdsCondition(Set<String> ids, boolean shouldMatch) { } private Condition getProfileConditionForCounter(String generatedPropertyKey, Integer minimumEventCount, Integer maximumEventCount, boolean eventsOccurred) { - String generatedPropertyName = "systemProperties.pastEvents." + generatedPropertyKey; + Condition countCondition = new Condition(); + + countCondition.setConditionType(definitionsService.getConditionType("nestedCondition")); + countCondition.setParameter("path", "systemProperties.pastEvents"); + + Condition subConditionCount = new Condition(definitionsService.getConditionType("profilePropertyCondition")); + + Condition subConditionKey = getKeyEqualsCondition(generatedPropertyKey); + ConditionType profilePropertyConditionType = definitionsService.getConditionType("profilePropertyCondition"); if (eventsOccurred) { - Condition counterIsBetweenBoundaries = new Condition(); - counterIsBetweenBoundaries.setConditionType(profilePropertyConditionType); - counterIsBetweenBoundaries.setParameter("propertyName", generatedPropertyName); - counterIsBetweenBoundaries.setParameter("comparisonOperator", "between"); - counterIsBetweenBoundaries.setParameter("propertyValuesInteger", Arrays.asList(minimumEventCount, maximumEventCount)); - return counterIsBetweenBoundaries; + subConditionCount.setParameter("propertyName", "systemProperties.pastEvents.count"); + subConditionCount.setParameter("comparisonOperator", "between"); + subConditionCount.setParameter("propertyValuesInteger", Arrays.asList(minimumEventCount, maximumEventCount)); + + Condition booleanCondition = new Condition(definitionsService.getConditionType("booleanCondition")); + booleanCondition.setParameter("operator", "and"); + booleanCondition.setParameter("subConditions", Arrays.asList(subConditionCount, subConditionKey)); + + countCondition.setParameter("subCondition", booleanCondition); + return countCondition; + } else { - Condition counterMissing = new Condition(); - counterMissing.setConditionType(profilePropertyConditionType); - counterMissing.setParameter("propertyName", generatedPropertyName); - counterMissing.setParameter("comparisonOperator", "missing"); - - Condition counterZero = new Condition(); - counterZero.setConditionType(profilePropertyConditionType); - counterZero.setParameter("propertyName", generatedPropertyName); + + // 1. Key not present in profile + Condition keyNestedCondition = new Condition(); + keyNestedCondition.setConditionType(definitionsService.getConditionType("nestedCondition")); + keyNestedCondition.setParameter("path", "systemProperties.pastEvents"); + + Condition keyEquals = new Condition(profilePropertyConditionType); + keyEquals.setParameter("propertyName", "systemProperties.pastEvents.key"); + keyEquals.setParameter("comparisonOperator", "equals"); + keyEquals.setParameter("propertyValue", generatedPropertyKey); Review Comment: keyEquals was added as a subCondition of keyNestedCondition at line 168 ########## plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PastEventConditionESQueryBuilder.java: ########## @@ -131,35 +131,77 @@ private Condition getProfileIdsCondition(Set<String> ids, boolean shouldMatch) { } private Condition getProfileConditionForCounter(String generatedPropertyKey, Integer minimumEventCount, Integer maximumEventCount, boolean eventsOccurred) { - String generatedPropertyName = "systemProperties.pastEvents." + generatedPropertyKey; + Condition countCondition = new Condition(); + + countCondition.setConditionType(definitionsService.getConditionType("nestedCondition")); + countCondition.setParameter("path", "systemProperties.pastEvents"); + + Condition subConditionCount = new Condition(definitionsService.getConditionType("profilePropertyCondition")); Review Comment: Updated! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@unomi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org