まくろぐ

GitHub GraphQL クエリ例: リポジトリの情報を取得する (repository)

更新:
作成:

GitHub の GraphQL API を使ってリポジトリの情報を取得するには、次のような方法があります。

  • repository クエリ … 組織名(あるいはユーザ名)とリポジトリ名が分かっている場合
  • organization クエリ … ある組織内のリポジトリの一覧を取得する場合(こちらの記事 を参考にしてください)
  • search クエリ汎用的な検索用クエリ でリポジトリを検索する

あるリポジトリのマイルストーンの一覧を取得する

repository クエリ を使用すると、指定した組織(ユーザー)の、指定したリポジトリの情報を取得することができます。

次の GraphQL クエリは、apollographql/apollo-client リポジトリで設定されているマイルストーンの一覧を要求しています。 milestones クエリで最初の 3 件分を取得していますが、最大 100 件まで同時に取得することができます。 100 件を超えるデータを取得したいときは、ページネーション処理 が必要です。

クエリ例
query {
  repository(owner: "apollographql", name: "apollo-client") {
    name
    url
    milestones(states: [OPEN,CLOSED], first: 3) {
      totalCount
      nodes {
        url
        title
        dueOn
        closed
        description
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
実行結果
{
  "data": {
    "repository": {
      "name": "apollo-client",
      "url": "https://github.com/apollographql/apollo-client",
      "milestones": {
        "totalCount": 17,
        "nodes": [
          {
            "url": "https://github.com/apollographql/apollo-client/milestone/1",
            "title": "alpha",
            "dueOn": "2016-04-19T07:00:00Z",
            "closed": true,
            "description": "Alpha release of the client, with enough features to be useful in a real app."
          },
          {
            "url": "https://github.com/apollographql/apollo-client/milestone/2",
            "title": "newspring-production",
            "dueOn": null,
            "closed": true,
            "description": ""
          },
          {
            "url": "https://github.com/apollographql/apollo-client/milestone/3",
            "title": "5/10 cycle",
            "dueOn": null,
            "closed": true,
            "description": "Some things to button down in the short term, that a lot of people have been asking about!"
          }
        ],
        "pageInfo": {
          "endCursor": "Y3Vyc29yOnYyOpHOABqZMg==",
          "hasNextPage": true
        }
      }
    }
  }
}

マイルストーンの一覧をソートする

milestones クエリを発行するときに、orderBy パラメータを指定すると、特定のフィールドの値を使ってソートされた結果を取得することができます。 次の例では、マイルストーンの Due Date が遅いものから順番に 100 件分を取得します。

GraphQL クエリ
query {
  repository(owner: "apollographql", name: "apollo-client") {
    milestones(states: [OPEN,CLOSED], last: 100,
        orderBy: {field: DUE_DATE, direction: DESC}) {
      nodes {
        url
        title
        dueOn
        closed
      }
    }
  }
}

マイルストーンに所属するイシューを取得する

milestones クエリを発行するときに、入れ子の形で issues を要求することで、各マイルストーンに所属するイシューのリストまで同時に取得してしまうことができます。

クエリ例
query {
  repository(owner: "apollographql", name: "apollo-client") {
    name
    url
    milestones(states: [OPEN,CLOSED], first: 3) {
      totalCount
      nodes {
        url
        title
        dueOn
        closed
        description
        issues(states: [OPEN,CLOSED], first: 10) {
          nodes {
            url
            title
            closed
          }
          pageInfo {
            endCursor
            hasNextPage
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
実行結果
省略

関連記事

まくろぐ
サイトマップまくへのメッセージ