Types 'Enum String'
Certaines informations ne peuvent avoir qu'une valeur provenant d'un ensemble prédéfini, ce qui devrait idéalement être modélisé à l'aide d'un type Enum. Cependant, les types enum ont la limitation que leurs valeurs ne peuvent pas inclure le caractère "-", et il y a des occasions où cela ne peut être évité.
Par exemple, il serait logique d'avoir un type enum CustomPostEnum, listant tous les custom post types pouvant être interrogés (c'est-à-dire ceux enregistrés sur le site, et auxquels il a été permis d'être interrogés). Cependant, les custom post types peuvent inclure le caractère "-" dans leurs noms, comme dans l'exemple "some-custom-cpt" ci-dessous :
{
customPosts(
filter: {
customPostTypes: ["post", "product", "some-custom-cpt"]
}
) {
# ...
}
}En raison de cette limitation, ce type ne peut pas être un type enum. À la place, Gato GraphQL l'implémente comme un type personnalisé "Enum String", qui est un type String ne pouvant recevoir qu'une valeur d'un ensemble prédéfini, similaire à un Enum.
Des exemples de types EnumString implémentés dans le schéma GraphQL incluent :
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Introspection : interroger les valeurs possibles pour les types "Enum String"
Nous pouvons récupérer la liste des valeurs acceptées pour chaque type EnumString via l'introspection :
query EnumStringTypePossibleValues {
__schema {
types {
name
extensions {
# This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
possibleValues
}
}
}
}