Tipos 'Enum String'
Ciertas piezas de información solo pueden tener un valor de un conjunto predefinido, lo que idealmente debería modelarse usando un tipo Enum. Sin embargo, los tipos enum tienen la limitación de que sus valores no pueden incluir el carácter "-", y hay ocasiones en las que esto no puede evitarse.
Por ejemplo, tendría sentido tener un tipo enum CustomPostEnum, listando todos los custom post types que pueden consultarse (es decir, los registrados en el sitio, y a los que se les ha permitido ser consultados). Sin embargo, los custom post types pueden incluir el carácter "-" en sus nombres, como en el ejemplo "some-custom-cpt" siguiente:
{
customPosts(
filter: {
customPostTypes: ["post", "product", "some-custom-cpt"]
}
) {
# ...
}
}Debido a esta limitación, este tipo no puede ser un tipo enum. En su lugar, Gato GraphQL lo implementa como un tipo personalizado "Enum String", que es un tipo String que solo puede recibir un valor de un conjunto predefinido, similar a un Enum.
Ejemplos de tipos EnumString implementados en el esquema GraphQL incluyen:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Introspección: consultando los valores posibles para los tipos "Enum String"
Podemos recuperar la lista de valores aceptados para cada tipo EnumString mediante introspección:
query EnumStringTypePossibleValues {
__schema {
types {
name
extensions {
# This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
possibleValues
}
}
}
}