GitHub GraphQL 查询 - 按用户统计给定月份的 PR 评论

Posted

技术标签:

【中文标题】GitHub GraphQL 查询 - 按用户统计给定月份的 PR 评论【英文标题】:GitHub GraphQL Query - Count PR reviews by user for a given month 【发布时间】:2019-01-29 00:28:30 【问题描述】:

我正在尝试使用 GitHub 的 GraphQL 界面来查询特定月份在 GitHub 存储库中审查​​的 PR 数量。

理想情况下,我只想提取在特定时间范围内发生的 cmets 和评论。最终,我想按用户对我的结果进行分组。

userA  10 reviews during month
userB  6 reviews during month
userC  4 reviews during month

这是我目前创建的查询。


  repository(owner: "DSpace", name: "DSpace") 
    pullRequests(last: 50) 
      nodes 
        state
        resourcePath
        comments (last: 100) 
          nodes 
            author 
              login
            
          
        
        reviews(last: 100) 
          nodes 
            state
            author 
              login
            
          
        
        
    
  

我怀疑我需要遍历所有拉取请求,然后过滤掉特定日期范围内的评论/cmets。

当我查看 GitHub GraphDB 架构时,“评论”和“cmets”对象似乎无法按日期过滤。我看到可用的过滤器是第一个、最后一个、作者和状态。有没有办法在 GraphDB 查询语言中表达这样的过滤器?

我看到 GraphQL 提供了一种使用 @include 和 @skip 按布尔属性进行过滤的方法。有没有办法将表达式传递给这些构造?

【问题讨论】:

【参考方案1】:

您可以尝试使用Github GraphQL's search(更多的是 v3 REST 结构,但在 v4 graphQL 中仍然可用)。 query 字符串指定最后更新的拉取请求的所有者、repo 名称、date range(作为创建 cmets/reviews 时间的近似值),然后键入 pr

新的查询,建立在您目前的基础之上,稍作修改:


  search(first: 100, query: "repo:DSpace/DSpace updated:2018-11-01..2018-12-01 type:pr", type: ISSUE) 
    nodes 
      ... on PullRequest 
        # use part of your original query from here onward
        state
        resourcePath
        comments(last: 100) 
          nodes 
            author 
              login
            
          
        
        reviews(last: 100) 
          nodes 
            author 
              login
            
          
        
      
    
  

【讨论】:

以上是关于GitHub GraphQL 查询 - 按用户统计给定月份的 PR 评论的主要内容,如果未能解决你的问题,请参考以下文章

使用 GraphQL 显示统计信息

GitHub Graphql:获取用户赞助商的赞助商层信息

通过 Github Graphql v4 API 列出所有用户

使用 graphql 查询 github 项目卡片

按关系查询 GraphQL?

按宽度限制 GraphQL 查询