正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

クエリ

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com
  • ステータス: ベータ

この機能の利用可否は機能フラグによって制御されています。 詳細については、履歴を参照してください。 この機能はテスト目的で利用可能ですが、本番環境での使用には対応していません。

Orbitクエリは、グラフ操作を記述するJSONオブジェクトです。クエリでは、特定の種類のオブジェクトのフェッチ、オブジェクト間の関係のトラバース、一致するオブジェクトのカウント、パスの検索、またはノードの隣接要素の取得が可能です。

クエリはGitLabの認可を通じて実行されます。レスポンスには、現在のユーザーがGitLabで読み取り可能なデータのみが含まれます。

クエリの形式を選択する

ユースケースクエリの形式
1つのエンティティタイプの一致するノードをフェッチする単一ノードのtraversal
既知のエンティティタイプ間の関係をたどる複数ノードのtraversal
グラフ結果のカウント、合計、平均、またはグループ化aggregation
2つの限定されたエンドポイント間のパスを検索するpath_finding
1つの限定されたノードに接続されているものを確認するneighbors

単一ノードのtraversalは検索の形式です。Orbitには独立したsearchクエリタイプはありません。

例: マージリクエストの差分をフェッチする

MergeRequestdiffカラムを使用して、マージリクエストの完全な統合差分をフェッチします。仮想カラムは名前を明示的に指定してリクエストしてください。

{
  "query_type": "traversal",
  "node": {
    "id": "mr",
    "entity": "MergeRequest",
    "node_ids": [12345],
    "columns": ["iid", "title", "state", "diff"]
  },
  "limit": 1
}

マージリクエストの差分コンテンツには、いくつかの異なる形式があります。

エンティティカラム返される内容
MergeRequestdiffマージリクエストの完全な統合差分
MergeRequestDiffpatch1つの差分スナップショットの完全なパッチ
MergeRequestDiffFilediffファイルごとの統合差分テキスト
Filecontentrawソースファイルテキスト
Definitioncontentインデックス作成済みの定義のソーステキスト

contentカラムはソースコードノード用です。マージリクエストの差分テキストには、エンティティに応じてdiffまたはpatchを使用してください。

例: 差分スナップショットと変更ファイルをフェッチする

HAS_DIFFを使用してマージリクエストからその差分スナップショットに移動し、次にHAS_FILEを使用してそれらのスナップショット内のファイルをフェッチします。

{
  "query_type": "traversal",
  "nodes": [
    {
      "id": "mr",
      "entity": "MergeRequest",
      "node_ids": [12345],
      "columns": ["iid", "title", "state"]
    },
    {
      "id": "snapshot",
      "entity": "MergeRequestDiff",
      "columns": ["id", "state", "patch"]
    },
    {
      "id": "file",
      "entity": "MergeRequestDiffFile",
      "columns": ["new_path", "old_path", "too_large", "diff"]
    }
  ],
  "relationships": [
    {"type": "HAS_DIFF", "from": "mr", "to": "snapshot"},
    {"type": "HAS_FILE", "from": "snapshot", "to": "file"}
  ],
  "limit": 20
}

too_largetrueの場合、MergeRequestDiffFile.diffnullになります。

例: ソースファイルのコンテンツをフェッチする

ソースコードエンティティにはcontentを使用します。この例では、パスでインデックス作成済みのファイルを検索し、rawファイルテキストを返します。

{
  "query_type": "traversal",
  "node": {
    "id": "file",
    "entity": "File",
    "filters": {
      "path": {"op": "ends_with", "value": "app/models/project.rb"}
    },
    "columns": ["path", "language", "content"]
  },
  "limit": 5
}

完全な構文、利用可能なフィールド、および検証ルールについては、Orbitクエリ言語を参照してください。