2

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

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

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
            }
          }
        }
      }  
    }
  }
}

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

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

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

4

1 回答 1

3

您可以尝试使用Github GraphQL 的搜索(更多的是 v3 REST 结构,但在 v4 graphQL 中仍然可用)。该query字符串指定了所有者、repo 名称、最后更新的拉取请求的日期范围(作为创建评论/评论时间的近似值)和类型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
            }
          }
        }
      }
    }
  }
}
于 2018-11-20T20:27:25.800 回答