2017-10-10 4 views
4

Je souhaite utiliser l'API Github de GraphQL pour lister récursivement tous les fichiers contenus dans le répertoire. En ce moment, ma requête ressemble à ceci:Github GraphQL Liste l'arborescence du contenu entier

{ 
    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 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Cependant, cela ne me donne que le premier niveau de contenu du répertoire, notamment quelques-uns des objets qui en résultent sont à nouveau des arbres. Existe-t-il un moyen d'ajuster la requête, de telle sorte qu'elle répertorie récursivement le contenu de l'arborescence?

+0

J'étais excité de voir votre question, à la fois parce que votre exemple a résolu un problème que j'avais avec GraphQL ET parce que je pensais que je connaissais une solution. Malheureusement, quand j'ai essayé d'utiliser un "fragment", il a jeté une erreur à propos de "Fragment [nom du fragment] contient une boucle infinie.Alors j'attends avec impatience une réponse à cette question, aussi. – REW

Répondre

2

Il n'existe aucun moyen de parcourir de manière récursive dans GraphQL. Cependant, vous pouvez le faire à l'aide d'une programmation variable de requête:

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 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Commencez avec une valeur de null et aller de là.