I have a GraphQL schema:
enum CustomType {
Foo
Bar
}
But I need to add enum items from my database. For that, I have made a Visitor that modify the schema model during runtime:
@Configuration(proxyBeanMethods = false)
class GraphQlConfig {
@Bean
public GraphQlSourceBuilderCustomizer sourceBuilderCustomizer() {
return builder -> builder.typeVisitors(List.of(new AssetGraphQlVisitor()));
}
}
public class AssetGraphQlVisitor extends GraphQLTypeVisitorStub {
@Override
public TraversalControl visitGraphQLEnumType(GraphQLEnumType node, TraverserContext<GraphQLSchemaElement> context) {
GraphQLEnumType returnedNode = node;
if (node.getName().equals("CustomType")) {
returnedNode = returnedNode
.transform(builder -> CustomType.getAll().forEach(type -> builder.value(type.getName())));
}
return super.visitGraphQLEnumType(returnedNode, context);
}
}
This seems to work well but when I go to my GraphiQL web interface, my custom types aren't present in the displayed schema...
How can I update the schema used by GraphiQL received from Spring GraphQL ?
Thanks!