Правильно ли сделать один запрос GraphQL и использовать результаты запроса для получения дополнительной (вложенной) информации путем вызова последующих запросов? - PullRequest
0 голосов
/ 07 ноября 2018

Это специально для API GitHub GraphQL. Насколько я понимаю, GraphQL состоит в том, что, поскольку он имеет структуру графа, можно получить все, что угодно, за один раз. Однако я не могу понять, как получить blobs (предпочтительно файлов, которые изменились) для всех коммитов в репозитории. Сейчас у меня есть 3 разных запроса, которые я использую впоследствии.

Получение коммитов вместе с деревом oid -

query {
  repository(name: "disradicator", owner: "armsp") {
    name
    defaultBranchRef {
      target {
        ... on Commit {
          history(first:10){
            nodes{
              message
              oid
              tree{
                oid
              }
            }
          }
        }
      }
    }
  }
}

Используя oid из дерева, чтобы получить tree entries -

query {
  repository(name: "disradicator", owner: "armsp") {
    treeDetails: object(oid: "554221f86bce59a7fe269be6c69dcccf9f9b1364"){
      ... on Tree {
        oid
        entries{
          name
          type
          oid
        }
      }
    }
  }
}

Использование oid для каждого элемента в entries для получения blob -

query {
  repository(name: "disradicator", owner: "armsp") {
    description
    name
    blobDetails: object(oid: "f288702d2fa16d3cdf0035b15a9fcbc552cd88e7") {
      ... on Blob {
        commitUrl
        commitResourcePath
        text
        oid
      }
    }
  }
}

Разве они не могут быть объединены в один запрос?
Можно ли получить большие двоичные объекты только для файлов, которые изменились, или для чего-то похожего на patch в GITHub REST API v3, который содержал разницу между родителем и текущим коммитом?

...