...

Source file src/github.com/vektah/gqlparser/v2/ast/argmap.go

Documentation: github.com/vektah/gqlparser/v2/ast

     1  package ast
     2  
     3  func arg2map(defs ArgumentDefinitionList, args ArgumentList, vars map[string]interface{}) map[string]interface{} {
     4  	result := map[string]interface{}{}
     5  	var err error
     6  
     7  	for _, argDef := range defs {
     8  		var val interface{}
     9  		var hasValue bool
    10  
    11  		if argValue := args.ForName(argDef.Name); argValue != nil {
    12  			if argValue.Value.Kind == Variable {
    13  				val, hasValue = vars[argValue.Value.Raw]
    14  			} else {
    15  				val, err = argValue.Value.Value(vars)
    16  				if err != nil {
    17  					panic(err)
    18  				}
    19  				hasValue = true
    20  			}
    21  		}
    22  
    23  		if !hasValue && argDef.DefaultValue != nil {
    24  			val, err = argDef.DefaultValue.Value(vars)
    25  			if err != nil {
    26  				panic(err)
    27  			}
    28  			hasValue = true
    29  		}
    30  
    31  		if hasValue {
    32  			result[argDef.Name] = val
    33  		}
    34  	}
    35  
    36  	return result
    37  }
    38  

View as plain text