Github GraphQL以递归方式列出目录中的所有文件

Sle*_*eik 7 github github-api graphql

我想使用GraphQL Github API递归列出目录中包含的所有文件.现在我的查询看起来像这样:

{
  search(first:1, type: REPOSITORY, query: "language:C") {
    edges {
      node {
        ... on Repository {
          name
          descriptionHTML
          stargazers {
            totalCount
          }
          forks {
            totalCount
          }
          object(expression: "master:") {
            ... on Tree {
              entries {
                name
                type
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,这只给了我第一级目录内容,特别是一些结果对象又是树.有没有办法调整查询,以便它再次递归列出树的内容?

Scr*_*omy 8

在 GraphQL 中无法递归迭代。但是,您可以使用查询变量以编程方式执行此操作:

query TestQuery($branch: GitObjectID) {
 search(first: 1, type: REPOSITORY, query: "language:C") {
    edges {
      node {
        ... on Repository {
          object(expression: "master:", oid: $branch) {
            ... on Tree {
              entries {
                oid
                name
                type
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

从值开始null并从那里开始。