Search in sources :

Example 1 with AttributeSort

use of org.kie.kogito.persistence.api.query.AttributeSort in project kogito-apps by kiegroup.

the class GraphQLQueryOrderByParser method apply.

@Override
public List<AttributeSort> apply(DataFetchingEnvironment env) {
    if (env == null) {
        return emptyList();
    }
    Optional<Argument> sortByArgument = env.getMergedField().getArguments().stream().filter(a -> "orderBy".equals(a.getName())).findFirst();
    if (sortByArgument.isPresent()) {
        Value value = sortByArgument.get().getValue();
        if (value instanceof ObjectValue) {
            return ((ObjectValue) value).getObjectFields().stream().flatMap(mapSortBy(env)).collect(toList());
        }
        if (value instanceof VariableReference) {
            VariableReference variable = (VariableReference) value;
            Map<String, Object> sort = (Map<String, Object>) env.getVariables().get(variable.getName());
            return sort.entrySet().stream().flatMap(mapSortBy()).collect(toList());
        }
    }
    return emptyList();
}
Also used : ObjectValue(graphql.language.ObjectValue) DataFetchingEnvironment(graphql.schema.DataFetchingEnvironment) Value(graphql.language.Value) Collections.emptyList(java.util.Collections.emptyList) ObjectField(graphql.language.ObjectField) EnumValue(graphql.language.EnumValue) Function(java.util.function.Function) Argument(graphql.language.Argument) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) Stream(java.util.stream.Stream) VariableReference(graphql.language.VariableReference) Map(java.util.Map) Optional(java.util.Optional) AttributeSort(org.kie.kogito.persistence.api.query.AttributeSort) QueryFilterFactory.orderBy(org.kie.kogito.persistence.api.query.QueryFilterFactory.orderBy) SortDirection(org.kie.kogito.persistence.api.query.SortDirection) ObjectValue(graphql.language.ObjectValue) Argument(graphql.language.Argument) VariableReference(graphql.language.VariableReference) ObjectValue(graphql.language.ObjectValue) Value(graphql.language.Value) EnumValue(graphql.language.EnumValue) Map(java.util.Map)

Aggregations

Argument (graphql.language.Argument)1 EnumValue (graphql.language.EnumValue)1 ObjectField (graphql.language.ObjectField)1 ObjectValue (graphql.language.ObjectValue)1 Value (graphql.language.Value)1 VariableReference (graphql.language.VariableReference)1 DataFetchingEnvironment (graphql.schema.DataFetchingEnvironment)1 Collections.emptyList (java.util.Collections.emptyList)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Function (java.util.function.Function)1 Collectors.toList (java.util.stream.Collectors.toList)1 Stream (java.util.stream.Stream)1 AttributeSort (org.kie.kogito.persistence.api.query.AttributeSort)1 QueryFilterFactory.orderBy (org.kie.kogito.persistence.api.query.QueryFilterFactory.orderBy)1 SortDirection (org.kie.kogito.persistence.api.query.SortDirection)1