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
            }
          }
        }
      }
    }
  }
}
Другие вопросы по тегам