Skip to content

Commit

Permalink
fix: Handle errors generated during input object thunks (#123)
Browse files Browse the repository at this point in the history
* Generate Filter base args for all objects before resolving

Is a hidden issue, AppendType is actually returning an error for many of our unit tests however it is being ignored

* Handle errors raised in input object thunks
  • Loading branch information
AndrewSisley authored Jan 27, 2022
1 parent 303df74 commit d0ba8d4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 11 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ replace (
github.com/SierraSoftworks/connor => github.com/sourcenetwork/connor v1.0.3-0.20210312091030-4823d0411a12

// temp bug fixing
github.com/graphql-go/graphql => github.com/sourcenetwork/graphql v0.7.10-0.20211201133854-7e4c02b364c3
github.com/graphql-go/graphql => github.com/sourcenetwork/graphql v0.7.10-0.20220122211559-2fe60b2360cc
// github.com/graphql-go/graphql => github.com/sourcenetwork/graphql v0.7.10-0.20210211004004-07fce0d1409f
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -913,8 +913,8 @@ github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:Udh
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
github.com/sourcenetwork/connor v1.0.3-0.20210312091030-4823d0411a12 h1:MELz22GoPeecJnBS5RT4i52bNY/wlpvbGW3L4lLuBTU=
github.com/sourcenetwork/connor v1.0.3-0.20210312091030-4823d0411a12/go.mod h1:IimP/qkAJro1hXbVA8xOMDdkUeWkVw8rF40XrZq5YX0=
github.com/sourcenetwork/graphql v0.7.10-0.20211201133854-7e4c02b364c3 h1:tlzloRd2CwVQmUUKp+xnZ8ydOgI/D0h/BooFNrDFNGg=
github.com/sourcenetwork/graphql v0.7.10-0.20211201133854-7e4c02b364c3/go.mod h1:3Ty9EMes+aoxl8xS0CsuCGQZ4JEsOlC5yqQDLOKoBRw=
github.com/sourcenetwork/graphql v0.7.10-0.20220122211559-2fe60b2360cc h1:Jl+vKL3i+wE+T95aHU0wGVUWf17NxeS+1ku+IQT6ZdU=
github.com/sourcenetwork/graphql v0.7.10-0.20220122211559-2fe60b2360cc/go.mod h1:3Ty9EMes+aoxl8xS0CsuCGQZ4JEsOlC5yqQDLOKoBRw=
github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0=
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU=
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc=
Expand Down
26 changes: 18 additions & 8 deletions query/graphql/schema/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,20 @@ func (g *Generator) fromAST(document *ast.Document) ([]*gql.Object, error) {
return nil, err
}

generatedFilterBaseArgs := make([]*gql.InputObject, len(g.typeDefs))
for i, t := range g.typeDefs {
generatedFilterBaseArgs[i] = g.genTypeFilterBaseArgInput(t)
}

for _, t := range generatedFilterBaseArgs {
g.manager.schema.AppendType(t)
}

// resolve types
if err := g.manager.ResolveTypes(); err != nil {
return nil, err
}

// for each built type
// generate query inputs
queryType := g.manager.schema.QueryType()
Expand Down Expand Up @@ -601,13 +615,9 @@ func (g *Generator) genTypeFilterArgInput(obj *gql.Object) *gql.InputObject {
inputCfg := gql.InputObjectConfig{
Name: genTypeName(obj, "FilterArg"),
}
fieldThunk := (gql.InputObjectConfigFieldMapThunk)(func() gql.InputObjectConfigFieldMap {
fieldThunk := (gql.InputObjectConfigFieldMapThunk)(func() (gql.InputObjectConfigFieldMap, error) {
fields := gql.InputObjectConfigFieldMap{}

// @attention: do we need to explicitly add our "sub types" to the TypeMap
filterBaseArgType := g.genTypeFilterBaseArgInput(obj)
g.manager.schema.AppendType(filterBaseArgType)

// conditionals
compoundListType := &gql.InputObjectFieldConfig{
Type: gql.NewList(selfRefType),
Expand Down Expand Up @@ -640,7 +650,7 @@ func (g *Generator) genTypeFilterArgInput(obj *gql.Object) *gql.InputObject {

// fmt.Println("#####################")
// spew.Dump(fields)
return fields
return fields, nil
})

// add the fields thunker
Expand Down Expand Up @@ -711,7 +721,7 @@ func (g *Generator) genTypeOrderArgInput(obj *gql.Object) *gql.InputObject {
inputCfg := gql.InputObjectConfig{
Name: genTypeName(obj, "OrderArg"),
}
fieldThunk := (gql.InputObjectConfigFieldMapThunk)(func() gql.InputObjectConfigFieldMap {
fieldThunk := (gql.InputObjectConfigFieldMapThunk)(func() (gql.InputObjectConfigFieldMap, error) {
fields := gql.InputObjectConfigFieldMap{}

for f, field := range obj.Fields() {
Expand All @@ -729,7 +739,7 @@ func (g *Generator) genTypeOrderArgInput(obj *gql.Object) *gql.InputObject {
}
}

return fields
return fields, nil
})

inputCfg.Fields = fieldThunk
Expand Down

0 comments on commit d0ba8d4

Please sign in to comment.