當前位置: 首頁>>代碼示例>>Golang>>正文


Golang types.GraphQLResult類代碼示例

本文整理匯總了Golang中github.com/chris-ramon/graphql-go/types.GraphQLResult的典型用法代碼示例。如果您正苦於以下問題:Golang GraphQLResult類的具體用法?Golang GraphQLResult怎麽用?Golang GraphQLResult使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了GraphQLResult類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: Execute

func Execute(p ExecuteParams, resultChan chan *types.GraphQLResult) {
	var errors []graphqlerrors.GraphQLFormattedError
	var result types.GraphQLResult
	params := BuildExecutionCtxParams{
		Schema:        p.Schema,
		Root:          p.Root,
		AST:           p.AST,
		OperationName: p.OperationName,
		Args:          p.Args,
		Errors:        errors,
		Result:        &result,
		ResultChan:    resultChan,
	}
	exeContext := buildExecutionContext(params)
	if result.HasErrors() {
		return
	}
	defer func() {
		if r := recover(); r != nil {
			var err error
			if r, ok := r.(error); ok {
				err = graphqlerrors.FormatError(r)
			}
			exeContext.Errors = append(exeContext.Errors, graphqlerrors.FormatError(err))
			result.Errors = exeContext.Errors
			resultChan <- &result
		}
	}()
	eOperationParams := ExecuteOperationParams{
		ExecutionContext: exeContext,
		Root:             p.Root,
		Operation:        exeContext.Operation,
	}
	executeOperation(eOperationParams, resultChan)
}
開發者ID:EmergentBehavior,項目名稱:graphql-go,代碼行數:35,代碼來源:executor.go

示例2: buildExecutionContext

func buildExecutionContext(p BuildExecutionCtxParams) (eCtx ExecutionContext) {
	operations := make(map[string]ast.Definition)
	fragments := make(map[string]ast.Definition)
	for _, statement := range p.AST.Definitions {
		switch stm := statement.(type) {
		case *ast.OperationDefinition:
			log.Println("kinds.OperationDefinition")
			key := ""
			if stm.GetName().Value != "" {
				key = stm.GetName().Value
			}
			operations[key] = stm
			break
		case *ast.FragmentDefinition:
			log.Println("kinds.FragmentDefinition")
			fragments[stm.GetName().Value] = stm
			break
		default:
			log.Println("default")
		}
	}
	log.Printf("debug - operations: %v", operations)
	if (p.OperationName == "") && (len(operations) != 1) {
		err := graphqlerrors.NewGraphQLFormattedError("Must provide operation name if query contains multiple operations")
		p.Result.Errors = append(p.Result.Errors, err)
		p.ResultChan <- p.Result
		return eCtx
	}
	var opName string
	if p.OperationName == "" {
		for k, _ := range operations {
			opName = k
			break
		}
	}
	operation, found := operations[opName]
	if !found {
		var result types.GraphQLResult
		err := graphqlerrors.NewGraphQLFormattedError(fmt.Sprintf("Unknown operation name: %s", opName))
		result.Errors = append(result.Errors, err)
		return eCtx
	}
	variables := GetVariableValues(p.Schema, operation.GetVariableDefinitions(), p.Args)
	eCtx.Schema = p.Schema
	eCtx.Fragments = fragments
	eCtx.Root = p.Root
	eCtx.Operation = operation
	eCtx.Variables = variables
	eCtx.Errors = p.Errors
	return eCtx
}
開發者ID:thanzen,項目名稱:graphql-go,代碼行數:51,代碼來源:executor.go

示例3: executeFieldsSerially

// Implements the "Evaluating selection sets" section of the spec for "write" mode.
func executeFieldsSerially(p ExecuteFieldsParams, resultChan chan *types.GraphQLResult) {
	if p.Source == nil {
		p.Source = map[string]interface{}{}
	}
	if p.Fields == nil {
		p.Fields = map[string][]*ast.Field{}
	}
	var result types.GraphQLResult

	finalResults := map[string]interface{}{}
	for responseName, fieldASTs := range p.Fields {
		resolved, state := resolveField(p.ExecutionContext, p.ParentType, p.Source, fieldASTs)
		if state.hasNoFieldDefs {
			continue
		}
		finalResults[responseName] = resolved
	}
	result.Errors = p.ExecutionContext.Errors
	result.Data = finalResults
	resultChan <- &result
}
開發者ID:tallstreet,項目名稱:graphql-go,代碼行數:22,代碼來源:executor.go

示例4: getOperationRootType

// 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
	}
}
開發者ID:tallstreet,項目名稱:graphql-go,代碼行數:30,代碼來源:executor.go

示例5: Execute

func Execute(p ExecuteParams, resultChan chan *types.GraphQLResult) {
	var errors []error
	var result types.GraphQLResult
	params := BuildExecutionCtxParams{
		Schema:        p.Schema,
		Root:          p.Root,
		AST:           p.AST,
		OperationName: p.OperationName,
		Args:          p.Args,
		Errors:        errors,
		Result:        &result,
		ResultChan:    resultChan,
	}
	exeContext := buildExecutionContext(params)
	if result.HasErrors() {
		return
	}
	eOperationParams := ExecuteOperationParams{
		ExecutionContext: exeContext,
		Root:             p.Root,
		Operation:        exeContext.Operation,
	}
	executeOperation(eOperationParams, resultChan)
}
開發者ID:thanzen,項目名稱:graphql-go,代碼行數:24,代碼來源:executor.go

示例6: executeOperation

func executeOperation(p ExecuteOperationParams, resultChan chan *types.GraphQLResult) {
	var results types.GraphQLResult
	operationType := getOperationRootType(p.ExecutionContext.Schema, p.Operation, resultChan)

	collectFieldsParams := CollectFieldsParams{
		ExeContext:    p.ExecutionContext,
		OperationType: operationType,
		SelectionSet:  p.Operation.GetSelectionSet(),
	}
	fields := collectFields(collectFieldsParams)
	executeFieldsParams := ExecuteFieldsParams{
		ExecutionContext: p.ExecutionContext,
		ParentType:       operationType,
		Source:           p.Root,
		Fields:           fields,
	}
	if p.Operation.GetOperation() == "mutation" {
		executeFieldsSerially(executeFieldsParams, resultChan)
		return
	}
	results = executeFields(executeFieldsParams)
	results.Errors = p.ExecutionContext.Errors
	resultChan <- &results
}
開發者ID:tallstreet,項目名稱:graphql-go,代碼行數:24,代碼來源:executor.go


注:本文中的github.com/chris-ramon/graphql-go/types.GraphQLResult類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。