Skip to content

Commit

Permalink
add resolver results check
Browse files Browse the repository at this point in the history
  • Loading branch information
sijad committed Jun 25, 2020
1 parent 546d6ea commit 01db2ce
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
18 changes: 17 additions & 1 deletion builder/builder.go
Expand Up @@ -195,13 +195,29 @@ func (g *gqlBuilder) ImportType(t types.Type, nilAble bool) (*introspection.Type
// TODO add needed injectables
}

methodResults := methodSig.Results()

switch methodResults.Len() {
case 0:
return nil, fmt.Errorf("resolvers must return at least one result")
case 1:
case 2:
if secTyp, ok := methodResults.At(1).Type().(*types.Named); !ok || secTyp.Obj().Id() != "_.error" {
return nil, fmt.Errorf("second resolvers result must be an error")
}
default:
return nil, fmt.Errorf("resolvers can not have more that two results")
}

var rtyp *introspection.TypeRef
resultTyp := methodSig.Results().At(0)
resultTyp := methodResults.At(0)
rtyp, err := underlingType(resultTyp.Type())
if err != nil {
return nil, err
}

// TODO let field knows if it returs error

field.Type = *rtyp
fields = append(fields, field)
}
Expand Down
4 changes: 2 additions & 2 deletions builder/testdata/basic/structs.go
Expand Up @@ -34,8 +34,8 @@ func (ms *MyStruct) I(args IArgsInput) []string {
return []string{"I"}
}

func (ms *MyStruct) II(args IArgsInput) *MyStruct {
return nil
func (ms *MyStruct) II(args IArgsInput) (*MyStruct, error) {
return nil, nil
}

func (ms *MyStruct) III(args IArgsInput) MyStruct {
Expand Down

0 comments on commit 01db2ce

Please sign in to comment.