From 2fb9cd53ba7ac6fb95aacc24ea87706930bdaab3 Mon Sep 17 00:00:00 2001 From: Ben Kraft Date: Fri, 10 Apr 2020 18:20:17 -0700 Subject: [PATCH] clean up handling of scalars --- generate/types.go | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/generate/types.go b/generate/types.go index 2c59d52..7c2745e 100644 --- a/generate/types.go +++ b/generate/types.go @@ -45,6 +45,11 @@ func (g *generator) getTypeForOperation(operation *ast.OperationDefinition) (nam } func (g *generator) addTypeForDefinition(nameOverride string, typ *ast.Definition, selectionSet []selection) (name string, err error) { + goName, ok := builtinTypes[typ.Name] + if ok { + return goName, nil + } + if nameOverride != "" { name = nameOverride } else { @@ -199,11 +204,8 @@ func (builder *typeBuilder) writeType(typ *ast.Type, selectionSet []selection, i def := builder.schema.Types[typ.Name()] // TODO: set inline = false for nested types switch def.Kind { - case ast.Enum, ast.Union, ast.Interface: + case ast.Scalar, ast.Enum, ast.Union, ast.Interface: inline = false - case ast.Scalar: - // TODO: this makes no sense! refactor builtin type handling. - inline = true } if inline { @@ -232,14 +234,6 @@ func (builder *typeBuilder) writeTypedef(typedef *ast.Definition, selectionSet [ } builder.WriteString("}") return nil - case ast.Scalar: - goName := builtinTypes[typedef.Name] - // TODO(benkraft): Handle custom scalars and enums. - if goName == "" { - return fmt.Errorf("unknown scalar name: %s", typedef.Name) - } - builder.WriteString(goName) - return nil case ast.Enum: // All GraphQL enums have underlying type string (in the Go sense). builder.WriteString("string\n") @@ -252,7 +246,8 @@ func (builder *typeBuilder) writeTypedef(typedef *ast.Definition, selectionSet [ } builder.WriteString(")\n") return nil - case ast.Union, ast.Interface: + case ast.Scalar, ast.Union, ast.Interface: + // TODO(benkraft): Handle custom scalars, unions, and interfaces. return fmt.Errorf("not implemented: %v", typedef.Kind) default: return fmt.Errorf("unexpected kind: %v", typedef.Kind)