From 2618ca07c1bdccabfca35e1c27c82691fcc56c09 Mon Sep 17 00:00:00 2001 From: Eduardo Mosko Date: Tue, 27 Aug 2024 23:48:04 -0300 Subject: [PATCH] fix: apply go_struct_tag to type overrides --- internal/codegen/golang/go_type.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/internal/codegen/golang/go_type.go b/internal/codegen/golang/go_type.go index 0d72621efe..54c488b128 100644 --- a/internal/codegen/golang/go_type.go +++ b/internal/codegen/golang/go_type.go @@ -9,6 +9,34 @@ import ( ) func addExtraGoStructTags(tags map[string]string, req *plugin.GenerateRequest, options *opts.Options, col *plugin.Column) { + columnType := sdk.DataType(col.Type) + notNull := col.NotNull || col.IsArray + + // db_type overrides + for _, override := range options.Overrides { + oride := override.ShimOverride + if oride.GoType.StructTags == nil { + continue + } + if oride.DbType == "" || oride.DbType != columnType { + // Different type. + continue + } + if oride.Nullable == notNull { + // Different nullability. + continue + } + if oride.Unsigned != col.Unsigned { + // Different signedness. + continue + } + // Add the extra tags. + for k, v := range oride.GoType.StructTags { + tags[k] = v + } + } + + // column overrides are more specific, therefore have higher precedence for _, override := range options.Overrides { oride := override.ShimOverride if oride.GoType.StructTags == nil {