Extension du schéma
Extension du schémaTypes 'Enum String'

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 :

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

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
      }
    }
  }
}