in src/main/com/intellij/lang/jsgraphql/types/schema/idl/SchemaGeneratorHelper.java [1036:1084]
void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder) {
//
// Schema can be missing if the type is called 'Query'. Pre flight checks have checked that!
//
TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry();
Map<String, OperationTypeDefinition> operationTypeDefs = buildCtx.operationTypeDefs;
GraphQLOutputType query = null;
GraphQLOutputType mutation;
GraphQLOutputType subscription;
Optional<OperationTypeDefinition> queryOperation = getOperationNamed("query", operationTypeDefs);
if (queryOperation.isEmpty()) {
Optional<TypeDefinition> queryTypeDef = typeRegistry.getType("Query");
if (queryTypeDef.isPresent()) {
query = buildOutputType(buildCtx, TypeName.newTypeName().name(queryTypeDef.get().getName()).build()).orElse(null);
}
}
else {
query = buildOperation(buildCtx, queryOperation.get()).orElse(null);
}
schemaBuilder.query(ObjectUtils.tryCast(query, GraphQLObjectType.class));
Optional<OperationTypeDefinition> mutationOperation = getOperationNamed("mutation", operationTypeDefs);
if (mutationOperation.isEmpty()) {
Optional<TypeDefinition> mutationTypeDef = typeRegistry.getType("Mutation");
if (mutationTypeDef.isPresent()) {
mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.get().getName()).build()).orElse(null);
schemaBuilder.mutation(ObjectUtils.tryCast(mutation, GraphQLObjectType.class));
}
}
else {
mutation = buildOperation(buildCtx, mutationOperation.get()).orElse(null);
schemaBuilder.mutation(ObjectUtils.tryCast(mutation, GraphQLObjectType.class));
}
Optional<OperationTypeDefinition> subscriptionOperation = getOperationNamed("subscription", operationTypeDefs);
if (subscriptionOperation.isEmpty()) {
Optional<TypeDefinition> subscriptionTypeDef = typeRegistry.getType("Subscription");
if (subscriptionTypeDef.isPresent()) {
subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.get().getName()).build()).orElse(null);
schemaBuilder.subscription(ObjectUtils.tryCast(subscription, GraphQLObjectType.class));
}
}
else {
subscription = buildOperation(buildCtx, subscriptionOperation.get()).orElse(null);
schemaBuilder.subscription(ObjectUtils.tryCast(subscription, GraphQLObjectType.class));
}
}