public Condition profileFilterInputCondition()

in graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/condition/factories/ProfileConditionFactory.java [92:137]


    public Condition profileFilterInputCondition(final CDPProfileFilterInput filterInput, final Map<String, Object> filterInputAsMap) {
        if (filterInput == null) {
            return matchAllCondition();
        }

        final List<Condition> rootSubConditions = new ArrayList<>();

        if (filterInput.getProfileIDs_contains() != null && !filterInput.getProfileIDs_contains().isEmpty()) {
            rootSubConditions.add(propertiesCondition("itemId", "inContains", filterInput.getProfileIDs_contains()));
        }

        if (filterInput.getSegments_contains() != null && filterInput.getSegments_contains().isEmpty()) {
            rootSubConditions.add(ConditionBuilder.create(getConditionType("profileSegmentCondition"))
                    .parameter("segments", filterInput.getSegments_contains())
                    .parameter("matchType", "in")
                    .build());
        }

        if (filterInput.getConsents_contains() != null && !filterInput.getConsents_contains().isEmpty()) {
            rootSubConditions.add(consentContainsCondition(filterInput.getConsents_contains()));

        }

        if (filterInput.getLists_contains() != null && filterInput.getLists_contains().isEmpty()) {
            rootSubConditions.add(ConditionBuilder.create(getConditionType("profileUserListCondition"))
                    .parameter("lists", filterInput.getLists_contains())
                    .parameter("matchType", "in")
                    .build());
        }

        if (filterInput.getProperties() != null) {
            final Map<String, Object> propertiesFilterAsMap = (Map<String, Object>) filterInputAsMap.get("properties");
            rootSubConditions.add(profilePropertiesFilterInputCondition(filterInput.getProperties(), propertiesFilterAsMap));
        }

        if (filterInput.getEvents() != null) {
            final Map<String, Object> eventsFilterAsMap = (Map<String, Object>) filterInputAsMap.get("events");
            rootSubConditions.add(profileEventsFilterInputCondition(filterInput.getEvents(), eventsFilterAsMap));
        }

        if (filterInput.getInterests() != null) {
            rootSubConditions.add(interestFilterInputCondition(filterInput.getInterests()));
        }

        return booleanCondition("and", rootSubConditions);
    }