...

Source file src/github.com/vektah/gqlparser/validator/rules/provided_required_arguments.go

Documentation: github.com/vektah/gqlparser/validator/rules

     1  package validator
     2  
     3  import (
     4  	"github.com/vektah/gqlparser/ast"
     5  	. "github.com/vektah/gqlparser/validator"
     6  )
     7  
     8  func init() {
     9  	AddRule("ProvidedRequiredArguments", func(observers *Events, addError AddErrFunc) {
    10  
    11  		observers.OnField(func(walker *Walker, field *ast.Field) {
    12  			if field.Definition == nil {
    13  				return
    14  			}
    15  
    16  		argDef:
    17  			for _, argDef := range field.Definition.Arguments {
    18  				if !argDef.Type.NonNull {
    19  					continue
    20  				}
    21  				if argDef.DefaultValue != nil {
    22  					continue
    23  				}
    24  				for _, arg := range field.Arguments {
    25  					if arg.Name == argDef.Name {
    26  						continue argDef
    27  					}
    28  				}
    29  
    30  				addError(
    31  					Message(`Field "%s" argument "%s" of type "%s" is required but not provided.`, field.Name, argDef.Name, argDef.Type.String()),
    32  					At(field.Position),
    33  				)
    34  			}
    35  		})
    36  
    37  		observers.OnDirective(func(walker *Walker, directive *ast.Directive) {
    38  			if directive.Definition == nil {
    39  				return
    40  			}
    41  
    42  		argDef:
    43  			for _, argDef := range directive.Definition.Arguments {
    44  				if !argDef.Type.NonNull {
    45  					continue
    46  				}
    47  				if argDef.DefaultValue != nil {
    48  					continue
    49  				}
    50  				for _, arg := range directive.Arguments {
    51  					if arg.Name == argDef.Name {
    52  						continue argDef
    53  					}
    54  				}
    55  
    56  				addError(
    57  					Message(`Directive "@%s" argument "%s" of type "%s" is required but not provided.`, directive.Definition.Name, argDef.Name, argDef.Type.String()),
    58  					At(directive.Position),
    59  				)
    60  			}
    61  		})
    62  	})
    63  }
    64  

View as plain text