void buildOperations()

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));
    }
  }