Estensione dello schema
Estensione dello schemaTipi 'Enum String'

Tipi 'Enum String'

Alcune informazioni possono avere solo un valore proveniente da un insieme predefinito, il che andrebbe idealmente modellato utilizzando un tipo Enum. Tuttavia, i tipi enum hanno la limitazione che i loro valori non possono includere il carattere "-", e ci sono occasioni in cui questo non può essere evitato.

Per esempio, avrebbe senso avere un tipo enum CustomPostEnum, che elenca tutti i custom post type che possono essere interrogati (cioè quelli registrati nel sito, e a cui è stato permesso di essere interrogati). Tuttavia, i custom post type possono includere il carattere "-" nei loro nomi, come nell'esempio "some-custom-cpt" qui sotto:

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

A causa di questa limitazione, questo tipo non può essere un tipo enum. Al suo posto, Gato GraphQL lo implementa come un tipo personalizzato "Enum String", che è un tipo String che può ricevere solo un valore da un insieme predefinito, simile a un Enum.

Esempi di tipi EnumString implementati nello schema GraphQL includono:

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

Introspezione: interrogare i valori possibili per i tipi "Enum String"

Possiamo recuperare la lista dei valori accettati per ogni tipo EnumString tramite l'introspezione:

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