Как реализовать фильтры запросов и сортировку с помощью Graphql SPQR?

Как реализовать фильтры запросов и сортировку с помощью Graphql SPQR?

Я ищу решение с Graphql SPQR для схемы, которая выглядит примерно так.

schema {
    query: Query
    mutation: Mutation
}

enumSortOrder {
    ASC
    DESC
}

type Article {
   id: String
   name: String
createdByUserId: String
createdOn: String
lastUpdatedOn: String
}

type Feedback {
    id: String
feedbackText: String
articleId: String
createdByUserId: String
createdOn: String
lastUpdatedOn: String
}

type Query {
    getAllArticles(pageNumber: Int!, pageSize : Int!, sortOrder: SortOrder!, sortBy: String!): [Article]
    getFeedBacksForArticle(articleId: String!): [Feedback]
}

type Mutation {
    createArticle(name: String!, createdByUserId: String!): Article
    createNewFeedback(feedbackText: String!, articleId: String!, createdByUserId: String!): Feedback
}

person Rajesh    schedule 24.09.2020    source источник


Ответы (1)


GraphQL SPQR опирается на подход, ориентированный на сначала код. Вам необходимо создать свои классы java и преобразователь и правильно аннотировать их:

public enum SortOrder {
  @GraphQLEnumValue(name = "ASC") ASC,
  @GraphQLEnumValue(name = "DESC") DESC
}

public class Article {
  //Article implementation here
}

public class Feedback {
  //Feedback implementation here
}

public class GraphQLResolver {

  @GraphQLQuery(name = "getAllArticles", description = "Search articles")
  public List<Article> getAllArticles(
    @NotNull @GraphQLArgument(name = "pageNumber") int pageNumber, 
    @NotNull @GraphQLArgument(name = "pageSize") int pageSize, 
    @NotNull @GraphQLArgument(name = "sortOrder") SortOrder sortOrder, 
    @NotNull @GraphQLArgument(name = "sortBy") String sortBy) {
    //Query implementation here
  }

  //implement other queries and mutation 
}

Следуйте инструкциям на странице https://github.com/leangen/graphql-spqr, чтобы раскрыть свой решатель графов.

person AllirionX    schedule 25.09.2020