Я пытаюсь использовать интерфейс GitHub GraphQL для запроса количества PR, проверенных в репозитории GitHub в течение определенного месяца.
В идеале я хотел бы извлекать только те комментарии и отзывы, которые имели место в течение определенного периода времени. В конечном итоге я хотел бы сгруппировать свои результаты по пользователям.
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. Есть ли способ передать выражения этим конструкциям?


Вы можете попробовать использовать Поиск Github GraphQL (больше похоже на конструкцию REST v3, но все еще доступно в v4 graphQL). Строка query определяет владельца, имя репо, диапазон дат последних обновленных запросов на вытягивание (что служит приблизительным значением того, когда создаются комментарии / обзоры), и тип 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
}
}
}
}
}
}
}