Типы «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:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Интроспекция: запрос возможных значений для типов «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
}
}
}
}