Tipe 'Enum String'
Informasi tertentu hanya dapat memiliki nilai dari sekumpulan nilai yang telah ditentukan sebelumnya, yang idealnya dimodelkan menggunakan tipe Enum. Namun, tipe enum memiliki keterbatasan bahwa nilainya tidak boleh menyertakan karakter "-", dan ada kalanya hal ini tidak dapat dihindari.
Misalnya, akan masuk akal untuk memiliki tipe enum CustomPostEnum, yang mencantumkan semua custom post type yang dapat di-query (yaitu yang terdaftar di situs, dan yang telah diizinkan untuk di-query). Namun, custom post type dapat menyertakan karakter "-" dalam namanya, seperti pada contoh "some-custom-cpt" berikut:
{
customPosts(
filter: {
customPostTypes: ["post", "product", "some-custom-cpt"]
}
) {
# ...
}
}Karena keterbatasan ini, tipe tersebut tidak dapat berupa tipe enum. Sebagai gantinya, Gato GraphQL mengimplementasikannya sebagai tipe "Enum String" kustom, yaitu tipe String yang hanya dapat menerima nilai dari sekumpulan nilai yang telah ditentukan sebelumnya, mirip dengan Enum.
Contoh tipe EnumString yang diimplementasikan dalam skema GraphQL meliputi:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Introspeksi: Melakukan Query pada Nilai-Nilai yang Mungkin untuk Tipe "Enum String"
Kita dapat mengambil daftar nilai yang diterima untuk setiap tipe EnumString melalui introspeksi:
query EnumStringTypePossibleValues {
__schema {
types {
name
extensions {
# This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
possibleValues
}
}
}
}