// Extracts the root type of the operation from the schema. func getOperationRootType(schema Schema, operation ast.Definition) (*Object, error) { if operation == nil { return nil, errors.New("Can only execute queries and mutations") } switch operation.GetOperation() { case ast.OperationTypeQuery: return schema.QueryType(), nil case ast.OperationTypeMutation: mutationType := schema.MutationType() if mutationType.PrivateName == "" { return nil, gqlerrors.NewError( "Schema is not configured for mutations", []ast.Node{operation}, "", nil, []int{}, nil, ) } return mutationType, nil case ast.OperationTypeSubscription: subscriptionType := schema.SubscriptionType() if subscriptionType.PrivateName == "" { return nil, gqlerrors.NewError( "Schema is not configured for subscriptions", []ast.Node{operation}, "", nil, []int{}, nil, ) } return subscriptionType, nil default: return nil, gqlerrors.NewError( "Can only execute queries, mutations and subscription", []ast.Node{operation}, "", nil, []int{}, nil, ) } }
// Extracts the root type of the operation from the schema. func getOperationRootType(schema Schema, operation ast.Definition) (*Object, error) { if operation == nil { return nil, errors.New("Can only execute queries and mutations") } switch operation.GetOperation() { case "query": return schema.GetQueryType(), nil case "mutation": mutationType := schema.GetMutationType() if mutationType.Name == "" { return nil, errors.New("Schema is not configured for mutations") } return mutationType, nil default: return nil, errors.New("Can only execute queries and mutations") } }