Paddy O'Brien
08/03/2022, 2:14 PM{
__typename
name: String
value: Type
}
Where Type
varies from union member to union member.
In V2 Type
was generated as a dataclass. Admitedly the types are Any
and do no preserve the graphql types.
Is there a way to trigger this behaviour in v3? or do we need to rewrite thew query using aliasesPaddy O'Brien
08/03/2022, 2:15 PMPaddy O'Brien
08/03/2022, 2:24 PMfragment PropertyValue on PropertyValue {
__typename
... on PropertyValueBoolean {
value
}
... on PropertyValueFloat {
value
}
... on PropertyValueInt {
value
}
... on PropertyValueJson {
value
}
... on PropertyValueString {
value
}
}
Generated model
data class PropertyValue(
val __typename: String = "PropertyValue",
val asPropertyValueBoolean: AsPropertyValueBoolean?,
val asPropertyValueFloat: AsPropertyValueFloat?,
val asPropertyValueInt: AsPropertyValueInt?,
val asPropertyValueJson: AsPropertyValueJson?,
val asPropertyValueString: AsPropertyValueString?
mbonnin
08/03/2022, 10:50 PMmbonnin
08/03/2022, 10:57 PMmbonnin
08/03/2022, 11:02 PM`value` cannot be merged with `value`: they have different shapes.
mbonnin
08/03/2022, 11:03 PMHowever, the field responses must be shapes which can be merged. For example, scalar values must not differ.
mbonnin
08/03/2022, 11:04 PMmbonnin
08/03/2022, 11:05 PMPaddy O'Brien
08/04/2022, 2:56 PMvalue
property is just Any
I believe.mbonnin
08/04/2022, 2:57 PMvalue
field in the different PropertyValueXYZ
types?Paddy O'Brien
08/04/2022, 2:57 PMPaddy O'Brien
08/04/2022, 2:58 PMPaddy O'Brien
08/04/2022, 5:01 PMPaddy O'Brien
08/04/2022, 5:02 PMvalue
are Any
mbonnin
08/04/2022, 5:30 PMmbonnin
08/04/2022, 5:30 PMgraphql-js
which is the reference implementation:
var schema = buildSchema(`
type Query {
foo: PropertyValue
}
union PropertyValue = PropertyValueBoolean | PropertyValueInt
type PropertyValueBoolean {
name: String!
value: Boolean
}
type PropertyValueInt {
name: String!
value: Int
}
`);
var document = parse(`
query GetFoo {
foo {
...PropertyValue
}
}
fragment PropertyValue on PropertyValue {
__typename
... on PropertyValueBoolean {
value
}
... on PropertyValueInt {
value
}
}
`)
var errors = validate(schema, document)
mbonnin
08/04/2022, 5:31 PMFields "value" conflict because they return conflicting types "Boolean" and "Int". Use different aliases on the fields to fetch both if this was intentional.
mbonnin
08/04/2022, 5:32 PMPaddy O'Brien
08/04/2022, 5:53 PMmbonnin
08/04/2022, 5:55 PM`value` cannot be merged with `value`: they have different shapes.
Paddy O'Brien
08/04/2022, 5:55 PMmbonnin
08/04/2022, 5:55 PMPaddy O'Brien
08/04/2022, 5:56 PMmbonnin
08/04/2022, 5:57 PMmbonnin
08/04/2022, 5:57 PMPaddy O'Brien
08/04/2022, 5:58 PMPaddy O'Brien
08/04/2022, 5:59 PMmbonnin
08/04/2022, 5:59 PMmbonnin
08/04/2022, 6:02 PMmbonnin
08/04/2022, 6:04 PMPaddy O'Brien
08/04/2022, 6:04 PMmbonnin
08/04/2022, 6:08 PMbod
08/04/2022, 6:13 PMmbonnin
08/04/2022, 6:13 PMmbonnin
08/04/2022, 6:14 PMPaddy O'Brien
08/04/2022, 6:14 PMPaddy O'Brien
08/04/2022, 6:15 PMmbonnin
08/04/2022, 6:22 PMPaddy O'Brien
08/04/2022, 6:27 PMmbonnin
08/30/2022, 6:39 PMmbonnin
08/30/2022, 6:40 PMmbonnin
08/30/2022, 6:40 PMmbonnin
08/30/2022, 6:40 PMPaddy O'Brien
08/30/2022, 6:54 PMmbonnin
08/30/2022, 7:03 PMPaddy O'Brien
08/30/2022, 7:35 PM