// Extracts the root type of the operation from the schema. func getOperationRootType(schema types.GraphQLSchema, operation ast.Definition, r chan *types.GraphQLResult) (objType *types.GraphQLObjectType) { if operation == nil { var result types.GraphQLResult err := graphqlerrors.NewGraphQLFormattedError("Can only execute queries and mutations") result.Errors = append(result.Errors, err) r <- &result return objType } switch operation.GetOperation() { case "query": return schema.GetQueryType() case "mutation": mutationType := schema.GetMutationType() if mutationType.Name == "" { var result types.GraphQLResult err := graphqlerrors.NewGraphQLFormattedError("Schema is not configured for mutations") result.Errors = append(result.Errors, err) r <- &result return objType } return mutationType default: var result types.GraphQLResult err := graphqlerrors.NewGraphQLFormattedError("Can only execute queries and mutations") result.Errors = append(result.Errors, err) r <- &result return objType } }