Расширение схемы
Расширение схемыТипы «Enum String»

Типы «Enum String»

Некоторые данные могут принимать только значения из заранее определённого набора, что в идеале следует моделировать с помощью типа Enum. Однако у enum-типов есть ограничение: их значения не могут содержать символ "-", а бывают случаи, когда этого невозможно избежать.

Например, было бы логично иметь enum-тип CustomPostEnum, перечисляющий все custom post types, доступные для запроса (то есть зарегистрированные на сайте и разрешённые для запросов). Однако custom post types могут включать символ "-" в своих названиях, как в примере "some-custom-cpt" ниже:

{
  customPosts(
    filter: {
      customPostTypes: ["post", "product", "some-custom-cpt"]
    }
  ) {
    # ...
  }
}

Из-за этого ограничения данный тип не может быть enum-типом. Вместо этого Gato GraphQL реализует его как пользовательский тип «Enum String», который является типом String, способным принимать только значения из заранее определённого набора, аналогично Enum.

Примеры типов EnumString, реализованных в схеме GraphQL:

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

Интроспекция: запрос возможных значений для типов «Enum String»

Список допустимых значений для каждого типа EnumString можно получить через интроспекцию:

query EnumStringTypePossibleValues {
  __schema {
    types {
      name
      extensions {
        # This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
        possibleValues
      }
    }
  }
}