From aafa6da73c7a1bbfab80013e5f058be39cc85bf7 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 22:22:15 +0300 Subject: [PATCH 1/6] fix impossible condition I guess it was meant to be this way --- generators/base/base.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/base/base.go b/generators/base/base.go index c2ac491..02816c1 100644 --- a/generators/base/base.go +++ b/generators/base/base.go @@ -183,7 +183,7 @@ func ReadFlags(command *cobra.Command) (conn, output, pkg string, tables []strin customTypes.Add(model.TypePGUuid, "uuid.UUID", "github.com/google/uuid") } - if gopgVer < 8 && gopgVer > 10 { + if gopgVer < 8 || gopgVer > 10 { err = fmt.Errorf("go-pg version %d not supported", gopgVer) return } From 2a47eb6373e84071475dd1e00b76f295e3d543b6 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 22:23:01 +0300 Subject: [PATCH 2/6] don't copy logger, use the pointer copying the logger also copies the mutex, which makes not much sense --- lib/database.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/database.go b/lib/database.go index 0e56dbf..b5be217 100644 --- a/lib/database.go +++ b/lib/database.go @@ -12,11 +12,11 @@ import ( // queryLogger helper struct for query logging type queryLogger struct { - logger log.Logger + logger *log.Logger } // newQueryLogger creates new helper struct for query logging -func newQueryLogger(logger log.Logger) queryLogger { +func newQueryLogger(logger *log.Logger) queryLogger { return queryLogger{logger: logger} } @@ -58,7 +58,7 @@ func newDatabase(url string, logger *log.Logger) (orm.DB, error) { client := pg.Connect(options) if logger != nil { - client.AddQueryHook(newQueryLogger(*logger)) + client.AddQueryHook(newQueryLogger(logger)) } return client, nil From cc43df63a3bfdeaa2f20401d51d8a3195d78fef8 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 22:23:51 +0300 Subject: [PATCH 3/6] remove checks for nil before range - they don't have any value --- model/entity.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/model/entity.go b/model/entity.go index abe001f..279d5e8 100644 --- a/model/entity.go +++ b/model/entity.go @@ -51,16 +51,12 @@ func NewEntity(schema, pgName string, columns []Column, relations []Relation) En impIndex: map[string]struct{}{}, } - if columns != nil { - for _, col := range columns { - entity.AddColumn(col) - } + for _, col := range columns { + entity.AddColumn(col) } - if relations != nil { - for _, rel := range relations { - entity.AddRelation(rel) - } + for _, rel := range relations { + entity.AddRelation(rel) } return entity From b3fbf231b13f5a830045f4d32b2c2d753d50ac72 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 22:24:32 +0300 Subject: [PATCH 4/6] simplify the code by using recommended functions --- util/texts.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/texts.go b/util/texts.go index 444815e..d531976 100644 --- a/util/texts.go +++ b/util/texts.go @@ -96,7 +96,7 @@ func Underscore(s string) string { // Sanitize makes string suitable for golang var, const, field, type name func Sanitize(s string) string { rgxp := regexp.MustCompile(`[^a-zA-Z\d\-_]`) - sanitized := strings.Replace(rgxp.ReplaceAllString(s, ""), "-", "_", -1) + sanitized := strings.ReplaceAll(rgxp.ReplaceAllString(s, ""), "-", "_") if len(sanitized) != 0 && ((sanitized[0] >= '0' && sanitized[0] <= '9') || sanitized[0] == '_') { sanitized = "T" + sanitized @@ -118,7 +118,7 @@ func EntityName(s string) string { for i := ln; i >= 0; i-- { split := splitted[i] singular := Singular(split) - if strings.ToLower(singular) != strings.ToLower(split) { + if !strings.EqualFold(singular, split) { splitted[i] = strings.Title(singular) break } From e78f595c0ccff0f7a54a7cc216d8b9dba4992cb8 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 22:25:02 +0300 Subject: [PATCH 5/6] implement other minor linter recommendations --- generators/base/base.go | 4 +--- generators/model/generator_test.go | 2 +- generators/search/generator_test.go | 2 +- lib/store.go | 2 -- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/generators/base/base.go b/generators/base/base.go index 02816c1..822471d 100644 --- a/generators/base/base.go +++ b/generators/base/base.go @@ -9,7 +9,7 @@ import ( "path" "strings" - "github.com/dizzyfool/genna/lib" + genna "github.com/dizzyfool/genna/lib" "github.com/dizzyfool/genna/model" "github.com/dizzyfool/genna/util" @@ -128,8 +128,6 @@ func AddFlags(command *cobra.Command) { flags.StringSlice(customTypesFlag, []string{}, "set custom types separated by comma\nformat: :.\nexamples: uuid:github.com/google/uuid.UUID,point:src/model.Point,bytea:string\n") flags.IntP(GoPgVer, "g", 10, "specify go-pg version (8, 9 and 10 are supported)") - - return } // ReadFlags reads basic flags from command diff --git a/generators/model/generator_test.go b/generators/model/generator_test.go index d167e3b..68b4eb4 100644 --- a/generators/model/generator_test.go +++ b/generators/model/generator_test.go @@ -19,7 +19,7 @@ func TestGenerator_Generate(t *testing.T) { generator.options.FollowFKs = true generator.options.CustomTypes.Add(model.TypePGUuid, "uuid.UUID", "github.com/google/uuid") generator.options.GoPgVer = 10 - //generator.options.AddJSONTag = true + // generator.options.AddJSONTag = true if err := generator.Generate(); err != nil { t.Errorf("generate error = %v", err) diff --git a/generators/search/generator_test.go b/generators/search/generator_test.go index 4faa33c..14af565 100644 --- a/generators/search/generator_test.go +++ b/generators/search/generator_test.go @@ -18,7 +18,7 @@ func TestGenerator_Generate(t *testing.T) { generator.options.Output = path.Join(os.TempDir(), "search_test.go") generator.options.FollowFKs = true generator.options.CustomTypes.Add(model.TypePGUuid, "uuid.UUID", "github.com/google/uuid") - //generator.options.AddJSONTag = true + // generator.options.AddJSONTag = true if err := generator.Generate(); err != nil { t.Errorf("generate error = %v", err) diff --git a/lib/store.go b/lib/store.go index 9526de0..97007c1 100644 --- a/lib/store.go +++ b/lib/store.go @@ -49,8 +49,6 @@ func (r relation) Target() table { } type column struct { - tableName struct{} `pg:",discard_unknown_columns"` - Schema string `pg:"schema_name"` Table string `pg:"table_name"` Name string `pg:"column_name"` From 11345a202bc62b908110ebf08a3a4871e5575799 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 14 Oct 2021 23:13:14 +0300 Subject: [PATCH 6/6] restore required field and add nolint --- lib/store.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/store.go b/lib/store.go index 97007c1..3611919 100644 --- a/lib/store.go +++ b/lib/store.go @@ -49,6 +49,9 @@ func (r relation) Target() table { } type column struct { + // nolint this field is required by go-pg + tableName struct{} `pg:",discard_unknown_columns"` + Schema string `pg:"schema_name"` Table string `pg:"table_name"` Name string `pg:"column_name"`