Github GraphQL:查看使用搜索时多个作者的结果分类(..)



我正试图在多个作者(本例中为AUTHOR1、AUTHOR2(上构建GraphQL查询。我知道我将如何获得所有PR的总数,但有没有办法也按作者查看细分?

query listCommitCounts($queryString: String!) {
search(query: $queryString, type: ISSUE, first: 10) {
issueCount
}
}
{
"queryString": "is:pr author:AUTHOR1 author:AUTHOR2 is:closed"
}

以下是的结果

{
"data": {
"search": {
"issueCount": 500
}
}
}

据我所知,没有一个查询可以像您所要求的那样,让您获得按用户分隔的issueCount。不过,你有几个选择:

您可以进行一个操作,使用两个别名查询:

query listCommitCounts($queryString1: String!, $queryString2: String!) {
user1:search(query: $queryString1, type: ISSUE, first: 10) {
issueCount
}
user2:search(query: $queryString2, type: ISSUE, first: 10) {
issueCount
}
}

带有

{
"queryString1": "is:pr author:AUTHOR1 is:closed",
"queryString2": "is:pr author:AUTHOR2 is:closed"
}

它给你:

{
"user1": {
"search": {
"issueCount": 100
}
},
"user2": {
"search": {
"issueCount": 400
}
}
}

或者你可以自己做计数:

query listCommitCounts($queryString: String!) {
search(query: $queryString, type: ISSUE, first: 10) {
pageInfo {
hasNextPage
endCursor
}
edges {
node {
... on PullRequest {
author {
login
}
}
}
}
}
}

这将返回结果的第一页。

{
"data": {
"search": {
"pageInfo": {
"hasNextPage": true,
"endCursor": "Y3Vyc662OjEw"
},
"edges": [
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR2"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR2"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
},
{
"node": {
"author": {
"login": "AUTHOR1"
}
}
}
]
}
}
}

然后,您必须获取该响应,按login计数,然后查看hasNextPage。如果它有下一页,您可以请求下一页:

query listCommitCounts($queryString: String!, $cursor: String!) {
search(query: $queryString, type: ISSUE, first: 10, after: $cursor) {
..sameStuff
}

带有

{
"queryString": "is:pr author:AUTHOR1 author:AUTHOR2 is:closed",
"cursor": "Y3Vyc662OjEw"
}

直到到达hasNextPage: false

前者的好处是,一切都在一个电话里。不幸的是,要通过编程实现这一点,您必须使用字符串插值来构建查询,这一点都不好玩。对于第二个选项,它有很多来回,但您可以使用静态查询来完成。

最新更新