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