GitHub GraphQL Query - подсчет PR-отзывов пользователя за данный месяц

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
2
0
734
1

Ответы 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
            }
          }
        }
      }
    }
  }
}

Другие вопросы по теме