【问题标题】:How to implement query filters and sorting using Graphql SPQR?如何使用 Graphql SPQR 实现查询过滤器和排序?
【发布时间】:2021-01-10 08:38:13
【问题描述】:

如何使用 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
}

【问题讨论】:

    标签: graphql graphql-java graphql-spqr


    【解决方案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 的自述文件公开您的graphql 解析器。

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 2018-12-09
      • 2017-09-11
      • 2019-06-08
      • 1970-01-01
      • 2020-07-14
      • 2011-07-09
      • 1970-01-01
      • 2018-05-31
      相关资源
      最近更新 更多