jny*_*len 5 github-api graphql
给定问题或拉取请求编号,我希望使用对GitHub GraphQL API 的单个查询来获取以下信息:
使用以下查询,除了确定谁关闭了问题或 PR 之外,我可以完成所有这些工作:
{
repository(owner: "Automattic", name: "wp-calypso") {
issueOrPullRequest(number: 23226) {
__typename
... on Closable {
closed
closedAt
# TODO: How to get ClosedEvent { actor } ?
}
... on Issue {
issueState: state
title
}
... on PullRequest {
prState: state
title
merged
mergedAt
mergeCommit {
committer {
user {
login
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 GitHub 的 GraphQL Explorer 工具运行此查询: https://developer.github.com/v4/explorer/
我可以将问题或 PR 视为 a Closable
,但我认为我需要从那里找到ClosedEvent
影响该对象的最后一个。这是我还没有弄清楚的部分。
在 GitHub 的 v3 REST API 中,确定所有这些信息可能需要 2 个请求。对于已关闭(未合并)的拉取请求,该closed_by
字段仅在请求拉取请求作为问题(通过issues
API 调用)时出现。所有其他拉取请求信息都可以通过pulls
API 调用获得。
获取关闭问题的演员的一种迂回(且丑陋)的方法如下(受此答案启发)。我希望可能有更好的方法,但目前这是一种方法。
诀窍是查询给定时间线中的大量事件(如果您绝对确定某个问题/PR 关闭后没有任何评论,您可以说timeline(last: 1)
),找到其中的ClosedEvent
或MergedEvent
并提取actor
{
repository(owner: "Automattic", name: "wp-calypso") {
issueOrPullRequest(number: 23226) {
__typename
... on Closable {
closed
closedAt
}
... on Issue {
timeline(last: 100) {
edges {
node {
__typename
... on ClosedEvent {
actor{
login
}
}
}
}
}
}
... on PullRequest {
timeline(last: 100) {
edges {
node {
__typename
... on MergedEvent {
actor{
login
}
}
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1793 次 |
最近记录: |