Skip to content

Commit e945f80

Browse files
author
Salman Ahmad
committed
More refactoring
1 parent b463cbc commit e945f80

File tree

4 files changed

+8
-10
lines changed

4 files changed

+8
-10
lines changed

graphql.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func ParseSchema(schemaString string, resolver interface{}, opts ...SchemaOpt) (
3939
}
4040

4141
if resolver != nil {
42-
r, err := resolvable.ApplyResolver(s.schema, resolver, s.useFieldResolvers)
42+
r, err := resolvable.ApplyResolver(s.schema, resolver)
4343
if err != nil {
4444
return nil, err
4545
}
@@ -97,6 +97,7 @@ func Logger(logger log.Logger) SchemaOpt {
9797
func UseFieldResolvers() SchemaOpt {
9898
return func(s *Schema) {
9999
s.useFieldResolvers = true
100+
s.schema.UseFieldResolvers = true
100101
}
101102
}
102103

graphql_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func (r *timeResolver) AddHour(args struct{ Time graphql.Time }) graphql.Time {
6161
return graphql.Time{Time: args.Time.Add(time.Hour)}
6262
}
6363

64-
var starwarsSchema = graphql.MustParseSchema(starwars.Schema, &starwars.Resolver{}, nil)
64+
var starwarsSchema = graphql.MustParseSchema(starwars.Schema, &starwars.Resolver{})
6565

6666
func TestHelloWorld(t *testing.T) {
6767
gqltesting.RunTests(t, []*gqltesting.Test{

internal/exec/resolvable/resolvable.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,9 @@ func (*Object) isResolvable() {}
5656
func (*List) isResolvable() {}
5757
func (*Scalar) isResolvable() {}
5858

59-
// TODO figure out a better way to handle passed config
60-
// this approach avoids updating signature of many functions
61-
var useFieldResolvers bool
62-
63-
func ApplyResolver(s *schema.Schema, resolver interface{}, useFieldRes bool) (*Schema, error) {
59+
func ApplyResolver(s *schema.Schema, resolver interface{}) (*Schema, error) {
6460

6561
b := newBuilder(s)
66-
useFieldResolvers = useFieldRes
6762

6863
var query, mutation Resolvable
6964

@@ -232,7 +227,7 @@ func (b *execBuilder) makeObjectExec(typeName string, fields schema.FieldList, p
232227
* 2) Otherwise use resolver type's field
233228
*/
234229
if isResolverSchemaOrType(rt) == true || len(f.Args) > 0 ||
235-
useFieldResolvers == false || rt.Kind() == reflect.Interface {
230+
b.schema.UseFieldResolvers == false || rt.Kind() == reflect.Interface {
236231
methodIndex = findMethod(resolverType, f.Name)
237232
} else {
238233
fieldIndex = findField(rt, f.Name)
@@ -266,7 +261,7 @@ func (b *execBuilder) makeObjectExec(typeName string, fields schema.FieldList, p
266261
* 2) Or it is configured to use method
267262
*/
268263
typeAssertions := make(map[string]*TypeAssertion)
269-
if isResolverSchemaOrType(rt) == true || useFieldResolvers == false {
264+
if isResolverSchemaOrType(rt) == true || b.schema.UseFieldResolvers == false {
270265
for _, impl := range possibleTypes {
271266
methodIndex := findMethod(resolverType, "To"+impl.Name)
272267
if methodIndex == -1 {

internal/schema/schema.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ type Schema struct {
4545
objects []*Object
4646
unions []*Union
4747
enums []*Enum
48+
49+
UseFieldResolvers bool
4850
}
4951

5052
// Resolve a named type in the schema by its name.

0 commit comments

Comments
 (0)