如果出现问题或请求号码,我想使用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
}
}
}
}
}
}
}
我使用GitHub的GraphQL Explorer工具运行此查询:https://developer.github.com/v4/explorer/
我可以将问题或公关视为Closable
,但我认为我需要从那里到达影响该对象的最后一个ClosedEvent
。这是我还没有想到的部分。
在GitHub的v3 REST API中,确定所有这些信息可能需要2个请求。对于已关闭(不是合并)的提款请求,closed_by
字段仅在请求提取请求作为问题时显示 (通过issues
API调用)。所有其他拉取请求信息均可通过pulls
API调用获取。
答案 0 :(得分:2)
让关闭问题的演员的一种环形(并且丑陋)方式如下(受此answer的启发)。我希望可能有更好的方法,但到目前为止这是一种方法。
诀窍是在给定的时间线中查询大量的事件(如果您完全确定在关闭后没有关于问题/ 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
}
}
}
}
}
}
}
}
}