herder
01/12/2021, 3:39 PMFederatedTypeResolver
in a Boot applications, but how ever I do it I can't get it to kick in. I wonder if I'm misunderstanding somehing - I have a simple schema like this
@KeyDirective(FieldSet("id"))
data class MySubThing(val id: Int?, val extraThing: String)
data class MyThing(@ExtendsDirective val id: String, val subThings: List<MySubThing>) {
}
, and register this resolver class as a bean:
class MySubThingResolver: FederatedTypeResolver<MySubThing> {
override suspend fun resolve(
environment: DataFetchingEnvironment,
representations: List<Map<String, Any>>
): List<MySubThing?> {
return representations.stream().map {
MySubThing(it["id"]?.toString()?.toInt(), "WOOOP")
}.collect(Collectors.toList())
}
But I can't get the resolver to be called however I try. What is the recommended way of registering resolvers for a schema in a Boot app?
(I have set the graphql.federation.enabled
to true
)Dariusz Kuc
01/12/2021, 3:46 PMFederatedTypeRegistry
bean that holds the mapping for those resolvers (https://github.com/ExpediaGroup/graphql-kotlin/blob/3.x.x/graphql-kotlin-spring-se[…]expediagroup/graphql/spring/FederatedSchemaAutoConfiguration.kt)herder
01/12/2021, 3:47 PM@Bean
fun federatedTypeRegistry(federatedTypeResolvers: List<FederatedTypeResolver<*>>): FederatedTypeRegistry {
return FederatedTypeRegistry(federatedTypeResolvers.map { "MySubThing" to it }.toMap())
}
Dariusz Kuc
01/12/2021, 3:50 PMherder
01/12/2021, 3:51 PMDariusz Kuc
01/12/2021, 3:51 PM@key
(which is missing on MyThing
herder
01/12/2021, 3:52 PMDariusz Kuc
01/12/2021, 3:53 PM@KeyDirective(fields = FieldSet("id"))
@ExtendsDirective
class MyThing(@ExternalDirective val id: String, val subThings: List<MySubThing>)
herder
01/12/2021, 4:00 PM