func executeOperation(p ExecuteOperationParams) *Result { operationType, err := getOperationRootType(p.ExecutionContext.Schema, p.Operation) if err != nil { return &Result{Errors: gqlerrors.FormatErrors(err)} } fields := collectFields(CollectFieldsParams{ ExeContext: p.ExecutionContext, OperationType: operationType, SelectionSet: p.Operation.GetSelectionSet(), }) executeFieldsParams := ExecuteFieldsParams{ ExecutionContext: p.ExecutionContext, ParentType: operationType, Source: p.Root, Fields: fields, } if p.Operation.GetOperation() == "mutation" { return executeFieldsSerially(executeFieldsParams) } else { return executeFields(executeFieldsParams) } }
func Do(p Params) *Result { source := source.NewSource(&source.Source{ Body: p.RequestString, Name: "GraphQL request", }) AST, err := parser.Parse(parser.ParseParams{Source: source}) if err != nil { return &Result{ Errors: gqlerrors.FormatErrors(err), } } validationResult := ValidateDocument(p.Schema, AST) if !validationResult.IsValid { return &Result{ Errors: validationResult.Errors, } } return Execute(ExecuteParams{ Schema: p.Schema, Root: p.RootObject, AST: AST, OperationName: p.OperationName, Args: p.VariableValues, }) }