GraphQL APIを使用して特定のレポをgithubから最新のリリースを取得できるようにしたいです。そのためには、ISDRAFTとISPRELELEASEがfalseの最新リリースを取得する必要があります。私は最初の部分を取得することに成功しましたが、クエリの一部を実行する方法を考え出すことができません。
これが私が得た基本的なクエリです( https://developer.github.com/v4/explorer/ )。
{
repository(owner: "paolosalvatori", name: "ServiceBusExplorer") {
releases(first: 1, orderBy: {field: CREATED_AT, direction: DESC}) {
nodes {
name
tagName
resourcePath
isDraft
isPrerelease
}
}
}
}
_
戻り値:
{
"data": {
"repository": {
"releases": {
"nodes": [
{
"name": "3.0.4",
"tagName": "3.0.4",
"resourcePath": "/paolosalvatori/ServiceBusExplorer/releases/tag/3.0.4",
"isDraft": false,
"isPrerelease": false
}
]
}
}
}
}
_
私はこれを行う方法を見つけることができないようです。その理由の一部は、私がGraphQLの新たなもの(初めてクエリをやろうとしています)、私は私の質問をどのようにフレーム化する方法はわかりません。
引数をサポートするタイプに基づいて「クエリ」するだけです(リポジトリやリリースの下記のリリースなど)。フィールド値にフィルタを指定する方法があるようです。
リポジトリ: https://developer.github.com/v4/object/repository/
リリース: https://developer.github.com/v4/object/releaseconnection/
引数をサポートするこれらの型に基づいて「クエリ」のみを1つだけできます。
はい:GraphQLは一般的なクエリ言語を同じ方法で定義していません。サーバーとアプリケーションスキーマによって提供されていない方法でフィールドの結果をソートまたはフィルタリングすることはできません。
GraphQL APIを使用して特定のレポをgithubからgithubからの最新の[非プラセリース]リリースを取得できるようになりたいです。
すでに見つかったように、 releases
typeのRepository
フィールド これらのフィールドを並べ替えるかフィルタリングするオプションがありません。代わりに、複数のGraphQL呼び出しを使用して、リリースを1つずつ繰り返すことができます。これらは個別に見えます
_query NextRelease($owner: String!, $name: String!, $after: String) {
repository(owner: $owner, name: $name) {
releases(first: 1,
orderBy: {field: CREATED_AT, direction: DESC},
after: $after) {
pageInfo { lastCursor }
nodes { ... ReleaseData } # from the question
}
}
}
_
これを実行しているのと同じ方法で実行します(リポジトリを別々のGraphQL変数に識別する情報を分割します)。最初の通話のafter
変数を除去することができます。 (例のように)_"isDraft": false, "isPrerelease": false
_を返す場合は、設定します。そうでない場合は、再試行する必要があります。レスポンスのlastCursor
から値を取り、同じクエリを実行し、そのカーソル値をafter
変数値として渡します。