Typy 'Enum String'
Niektóre informacje mogą przyjmować wyłącznie wartości z predefiniowanego zbioru, co idealnie powinno być modelowane przy użyciu typu Enum. Jednak typy enum mają ograniczenie polegające na tym, że ich wartości nie mogą zawierać znaku "-", a zdarzają się sytuacje, w których nie można tego uniknąć.
Na przykład, sensowne byłoby posiadanie typu enum CustomPostEnum, zawierającego listę wszystkich custom post types, które mogą być odpytywane (tj. tych zarejestrowanych w witrynie i które zostały dopuszczone do odpytywania). Jednak custom post types mogą zawierać znak "-" w swoich nazwach, jak w przykładzie "some-custom-cpt" poniżej:
{
customPosts(
filter: {
customPostTypes: ["post", "product", "some-custom-cpt"]
}
) {
# ...
}
}Z powodu tego ograniczenia typ ten nie może być typem enum. Zamiast tego Gato GraphQL implementuje go jako własny typ "Enum String", który jest typem String mogącym przyjmować wyłącznie wartości z predefiniowanego zbioru, podobnie jak Enum.
Przykłady typów EnumString zaimplementowanych w schemacie GraphQL obejmują:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Introspekcja: pobieranie możliwych wartości dla typów "Enum String"
Możemy pobrać listę akceptowanych wartości dla każdego typu EnumString poprzez introspekcję:
query EnumStringTypePossibleValues {
__schema {
types {
name
extensions {
# This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
possibleValues
}
}
}
}