...

Source file src/github.com/vektah/gqlparser/validator/rules/unique_argument_names.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("UniqueArgumentNames", func(observers *Events, addError AddErrFunc) {
    10  		observers.OnField(func(walker *Walker, field *ast.Field) {
    11  			checkUniqueArgs(field.Arguments, addError)
    12  		})
    13  
    14  		observers.OnDirective(func(walker *Walker, directive *ast.Directive) {
    15  			checkUniqueArgs(directive.Arguments, addError)
    16  		})
    17  	})
    18  }
    19  
    20  func checkUniqueArgs(args ast.ArgumentList, addError AddErrFunc) {
    21  	knownArgNames := map[string]bool{}
    22  
    23  	for _, arg := range args {
    24  		if knownArgNames[arg.Name] {
    25  			addError(
    26  				Message(`There can be only one argument named "%s".`, arg.Name),
    27  				At(arg.Position),
    28  			)
    29  		}
    30  
    31  		knownArgNames[arg.Name] = true
    32  	}
    33  }
    34  

View as plain text