Skip to content

GraphQL: фильтрация по полям

artifactTree

Расширенный query в artifacts/graphql/schema.ts:

graphql
query {
  artifactTree(
    spaceId: "…"
    fieldFilters: [
      { key: "my-ext.flag", op: eq, value: "true" }
      { key: "my-ext.status", op: in, values: ["open", "review"] }
    ]
  ) {
    # tree nodes
  }
}

Операции (EntityFieldFilterOp)

OpСемантика (string)
eqравенство
neqне равно
containsподстрока
startsWithпрефикс
inодно из значений (values или comma-separated value)

Реализация

entity-field-query.service.ts — JOIN EntityFieldValue по (entityType, fieldKey, value) → список entityId → фильтр tree/list.

Только поля с filterable: true в registry.

Ограничения

  • Не добавляйте поля в Keystone ArtifactWhereInput — только custom args.
  • Лимитируйте число fieldFilters в запросе (performance).
  • Numeric/boolean сравнения — convention на стороне расширения (каноническая строка).

Пример use case

Space flag workflow-engine.strictMode=true + filter artifacts с workflow-engine.deliverableState=approved в дереве — без custom SQL в расширении.

AI workspace для командных материалов и знаний