diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f0199ee0..674e462f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -14,6 +14,8 @@ When releasing a new version: ### Bug fixes: +- Using `pointer: true` will generate `omitempty` tags to all pointer input types. + --> ## next diff --git a/generate/convert.go b/generate/convert.go index 3b1f750a..c465aa24 100644 --- a/generate/convert.go +++ b/generate/convert.go @@ -450,13 +450,20 @@ func (g *generator) convertDefinition( return nil, err } + // We always want to set omitempty if the field is a pointer, unless + // the user explicitly wants the value to be sent as null. + omitEmpty := fieldOptions.GetOmitempty() + if options.GetPointer() || (!field.Type.NonNull && g.Config.Optional == "pointer") && fieldOptions.Omitempty == nil { + omitEmpty = true + } + goType.Fields[i] = &goStructField{ GoName: goName, GoType: fieldGoType, JSONName: field.Name, GraphQLName: field.Name, Description: field.Description, - Omitempty: fieldOptions.GetOmitempty(), + Omitempty: omitEmpty, } } return goType, nil