Skip to content

Commit 5435e6e

Browse files
authored
Merge pull request #17 from bhoriuchi/interfaces
Interfaces
2 parents 918ae1f + 4cbeb43 commit 5435e6e

File tree

2 files changed

+52
-24
lines changed

2 files changed

+52
-24
lines changed

directives.go

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package tools
22

33
import (
44
"context"
5+
"fmt"
56

67
"github.com/graphql-go/graphql"
78
"github.com/graphql-go/graphql/language/ast"
@@ -197,111 +198,133 @@ func (c *registry) applyDirectives(p applyDirectiveParams) error {
197198

198199
args, err := GetArgumentValues(directive.Args, def.Arguments, map[string]interface{}{})
199200
if err != nil {
200-
return err
201+
return fmt.Errorf("applyDirective %v error: %s", p.config, err)
201202
}
202203

203204
switch p.config.(type) {
204205
case *graphql.SchemaConfig:
205206
if visitor.VisitSchema != nil {
206-
visitor.VisitSchema(VisitSchemaParams{
207+
if err := visitor.VisitSchema(VisitSchemaParams{
207208
Context: c.ctx,
208209
Config: p.config.(*graphql.SchemaConfig),
209210
Args: args,
210211
Node: p.node.(*ast.SchemaDefinition),
211-
})
212+
}); err != nil {
213+
return err
214+
}
212215
}
213216
case *graphql.ScalarConfig:
214217
if visitor.VisitScalar != nil {
215-
visitor.VisitScalar(VisitScalarParams{
218+
if err := visitor.VisitScalar(VisitScalarParams{
216219
Context: c.ctx,
217220
Config: p.config.(*graphql.ScalarConfig),
218221
Args: args,
219222
Node: p.node.(*ast.ScalarDefinition),
220-
})
223+
}); err != nil {
224+
return err
225+
}
221226
}
222227
case *graphql.ObjectConfig:
223228
if visitor.VisitObject != nil {
224-
visitor.VisitObject(VisitObjectParams{
229+
if err := visitor.VisitObject(VisitObjectParams{
225230
Context: c.ctx,
226231
Config: p.config.(*graphql.ObjectConfig),
227232
Args: args,
228233
Node: p.node.(*ast.ObjectDefinition),
229234
Extensions: p.extensions,
230-
})
235+
}); err != nil {
236+
return err
237+
}
231238
}
232239
case *graphql.Field:
233240
if visitor.VisitFieldDefinition != nil {
234-
visitor.VisitFieldDefinition(VisitFieldDefinitionParams{
241+
if err := visitor.VisitFieldDefinition(VisitFieldDefinitionParams{
235242
Context: c.ctx,
236243
Config: p.config.(*graphql.Field),
237244
Args: args,
238245
Node: p.node.(*ast.FieldDefinition),
239246
ParentName: p.parentName,
240247
ParentKind: p.parentKind,
241-
})
248+
}); err != nil {
249+
return err
250+
}
242251
}
243252
case *graphql.ArgumentConfig:
244253
if visitor.VisitArgumentDefinition != nil {
245-
visitor.VisitArgumentDefinition(VisitArgumentDefinitionParams{
254+
if err := visitor.VisitArgumentDefinition(VisitArgumentDefinitionParams{
246255
Context: c.ctx,
247256
Config: p.config.(*graphql.ArgumentConfig),
248257
Args: args,
249258
Node: p.node.(*ast.InputValueDefinition),
250-
})
259+
}); err != nil {
260+
return err
261+
}
251262
}
252263
case *graphql.InterfaceConfig:
253264
if visitor.VisitInterface != nil {
254-
visitor.VisitInterface(VisitInterfaceParams{
265+
if err := visitor.VisitInterface(VisitInterfaceParams{
255266
Context: c.ctx,
256267
Config: p.config.(*graphql.InterfaceConfig),
257268
Args: args,
258269
Node: p.node.(*ast.InterfaceDefinition),
259-
})
270+
}); err != nil {
271+
return err
272+
}
260273
}
261274
case *graphql.UnionConfig:
262275
if visitor.VisitUnion != nil {
263-
visitor.VisitUnion(VisitUnionParams{
276+
if err := visitor.VisitUnion(VisitUnionParams{
264277
Context: c.ctx,
265278
Config: p.config.(*graphql.UnionConfig),
266279
Args: args,
267280
Node: p.node.(*ast.UnionDefinition),
268-
})
281+
}); err != nil {
282+
return err
283+
}
269284
}
270285
case *graphql.EnumConfig:
271286
if visitor.VisitEnum != nil {
272-
visitor.VisitEnum(VisitEnumParams{
287+
if err := visitor.VisitEnum(VisitEnumParams{
273288
Context: c.ctx,
274289
Config: p.config.(*graphql.EnumConfig),
275290
Args: args,
276291
Node: p.node.(*ast.EnumDefinition),
277-
})
292+
}); err != nil {
293+
return err
294+
}
278295
}
279296
case *graphql.EnumValueConfig:
280297
if visitor.VisitEnumValue != nil {
281-
visitor.VisitEnumValue(VisitEnumValueParams{
298+
if err := visitor.VisitEnumValue(VisitEnumValueParams{
282299
Context: c.ctx,
283300
Config: p.config.(*graphql.EnumValueConfig),
284301
Args: args,
285302
Node: p.node.(*ast.EnumValueDefinition),
286-
})
303+
}); err != nil {
304+
return err
305+
}
287306
}
288307
case *graphql.InputObjectConfig:
289308
if visitor.VisitInputObject != nil {
290-
visitor.VisitInputObject(VisitInputObjectParams{
309+
if err := visitor.VisitInputObject(VisitInputObjectParams{
291310
Context: c.ctx,
292311
Config: p.config.(*graphql.InputObjectConfig),
293312
Args: args,
294313
Node: p.node.(*ast.InputObjectDefinition),
295-
})
314+
}); err != nil {
315+
return err
316+
}
296317
}
297318
case *graphql.InputObjectFieldConfig:
298319
if visitor.VisitInputFieldDefinition != nil {
299-
visitor.VisitInputFieldDefinition(VisitInputFieldDefinitionParams{
320+
if err := visitor.VisitInputFieldDefinition(VisitInputFieldDefinitionParams{
300321
Context: c.ctx,
301322
Config: p.config.(*graphql.InputObjectFieldConfig),
302323
Args: args,
303324
Node: p.node.(*ast.InputValueDefinition),
304-
})
325+
}); err != nil {
326+
return err
327+
}
305328
}
306329
}
307330
}

values.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ func GetArgumentValues(argDefs []*graphql.Argument, argASTs []*ast.Argument, var
4242
typeString := argDef.Type.String()
4343
isNonNull := typeString[len(typeString)-1:] == "!"
4444
if isNonNull && isNullish(value) {
45-
return nil, fmt.Errorf("graphql input %q cannot be null", name)
45+
locs := []string{}
46+
47+
for _, a := range argASTs {
48+
locs = append(locs, fmt.Sprintf("%d:%d", a.Loc.Start, a.Loc.End))
49+
}
50+
return nil, fmt.Errorf(`graphql input %q @ %q cannot be null`, name, locs)
4651
}
4752

4853
if !isNullish(value) {

0 commit comments

Comments
 (0)