aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/99designs/gqlgen/codegen/directive.go
diff options
context:
space:
mode:
authorAmine Hilaly <hilalyamine@gmail.com>2019-07-07 13:37:03 +0200
committerAmine Hilaly <hilalyamine@gmail.com>2019-07-07 13:37:03 +0200
commite381d5554a1b2b6e3a750206a853e090ec8183ab (patch)
treec4e19908c27389f9ccf030112efbf1f72e2469c5 /vendor/github.com/99designs/gqlgen/codegen/directive.go
parentcb7fefdc99cac1952c7a6f6765420819aee71d63 (diff)
downloadgit-bug-e381d5554a1b2b6e3a750206a853e090ec8183ab.tar.gz
Update gqlgen vendors
Diffstat (limited to 'vendor/github.com/99designs/gqlgen/codegen/directive.go')
-rw-r--r--vendor/github.com/99designs/gqlgen/codegen/directive.go63
1 files changed, 43 insertions, 20 deletions
diff --git a/vendor/github.com/99designs/gqlgen/codegen/directive.go b/vendor/github.com/99designs/gqlgen/codegen/directive.go
index 5a27e8ac..491f92f4 100644
--- a/vendor/github.com/99designs/gqlgen/codegen/directive.go
+++ b/vendor/github.com/99designs/gqlgen/codegen/directive.go
@@ -10,12 +10,43 @@ import (
"github.com/vektah/gqlparser/ast"
)
+type DirectiveList map[string]*Directive
+
+//LocationDirectives filter directives by location
+func (dl DirectiveList) LocationDirectives(location string) DirectiveList {
+ return locationDirectives(dl, ast.DirectiveLocation(location))
+}
+
type Directive struct {
+ *ast.DirectiveDefinition
Name string
Args []*FieldArgument
Builtin bool
}
+//IsLocation check location directive
+func (d *Directive) IsLocation(location ...ast.DirectiveLocation) bool {
+ for _, l := range d.Locations {
+ for _, a := range location {
+ if l == a {
+ return true
+ }
+ }
+ }
+
+ return false
+}
+
+func locationDirectives(directives DirectiveList, location ...ast.DirectiveLocation) map[string]*Directive {
+ mDirectives := make(map[string]*Directive)
+ for name, d := range directives {
+ if d.IsLocation(location...) {
+ mDirectives[name] = d
+ }
+ }
+ return mDirectives
+}
+
func (b *builder) buildDirectives() (map[string]*Directive, error) {
directives := make(map[string]*Directive, len(b.Schema.Directives))
@@ -24,11 +55,6 @@ func (b *builder) buildDirectives() (map[string]*Directive, error) {
return nil, errors.Errorf("directive with name %s already exists", name)
}
- var builtin bool
- if name == "skip" || name == "include" || name == "deprecated" {
- builtin = true
- }
-
var args []*FieldArgument
for _, arg := range dir.Arguments {
tr, err := b.Binder.TypeReference(arg.Type, nil)
@@ -53,9 +79,10 @@ func (b *builder) buildDirectives() (map[string]*Directive, error) {
}
directives[name] = &Directive{
- Name: name,
- Args: args,
- Builtin: builtin,
+ DirectiveDefinition: dir,
+ Name: name,
+ Args: args,
+ Builtin: b.Config.Directives[name].SkipRuntime,
}
}
@@ -92,8 +119,10 @@ func (b *builder) getDirectives(list ast.DirectiveList) ([]*Directive, error) {
})
}
dirs[i] = &Directive{
- Name: d.Name,
- Args: args,
+ Name: d.Name,
+ Args: args,
+ DirectiveDefinition: list[i].Definition,
+ Builtin: b.Config.Directives[d.Name].SkipRuntime,
}
}
@@ -119,18 +148,12 @@ func (d *Directive) CallArgs() string {
return strings.Join(args, ", ")
}
-func (d *Directive) ResolveArgs(obj string, next string) string {
- args := []string{"ctx", obj, next}
+func (d *Directive) ResolveArgs(obj string, next int) string {
+ args := []string{"ctx", obj, fmt.Sprintf("directive%d", next)}
for _, arg := range d.Args {
- dArg := "&" + arg.VarName
- if !arg.TypeReference.IsPtr() {
- if arg.Value != nil {
- dArg = templates.Dump(arg.Value)
- } else {
- dArg = templates.Dump(arg.Default)
- }
- } else if arg.Value == nil && arg.Default == nil {
+ dArg := arg.VarName
+ if arg.Value == nil && arg.Default == nil {
dArg = "nil"
}