You can use Zeus with GraphQL Unions:
const { drawChangeCard } = await chain('query')({
drawChangeCard: {
__typename: true,
'...on EffectCard': {
effectSize: true,
name: true,
},
'...on SpecialCard': {
effect: true,
name: true,
},
},
});
and it will give you this response:
{
"effectSize": 195.99532210956377,
"name": "Destinee",
"__typename": "EffectCard"
}
Zeus also works with GraphQL Interfaces
const { nameables } = await Gql('query')({
nameables: {
__typename: true,
name: true,
'...on CardStack': {
cards: {
Defense: true,
},
},
'...on Card': {
Attack: true,
},
},
});
giving the following response:
{
"nameables": [
{
"__typename": "EffectCard",
"name": "Hector"
},
{
"__typename": "CardStack",
"name": "Scotty",
"cards": [
{
"Defense": 1950
},
{
"Defense": 76566
}
]
},
{
"__typename": "SpecialCard",
"name": "Itzel"
}
]
}