Hola!
ayer quedó picando una pregunta de cómo mapear una jerarquía de objetos polimórficos a GraphQL. La respuesta es que existen interfaces en GraphQL, aunque la implementación quizás sea un poco decepcionante:
interface Animal {
id: ID!
nombre: String!
}
type Perro implements Animal {
id: ID!
nombre: String!
ladra: Boolean!
}
type Gato implements Animal {
id: ID!
nombre: String!
maulla: Boolean!
}
type Query {
animales: [Animal!]!
}
Qué pasa en una consulta GraphQL -> se usan fragments:
query {
animales {
id
nombre
... on Perro {
ladra
}
... on Gato {
maulla
}
}
}
(on Perro y on Gato definen el type sobre el cual trabajan). Nosotros en los resolvers de ese schema necesitamos definir las clases Gato y Perro con las herramientas OO que ya conocemos (herencia o en el caso de la interface de Kotlin redefiniendo los atributos).
Saludos y suerte
Fernando