From c7a7130f8b43667f5a6e754e49eacaf61c2a1bdd Mon Sep 17 00:00:00 2001 From: go-jet Date: Sat, 5 Apr 2025 14:35:35 +0200 Subject: [PATCH 1/8] Add ways to donate. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 2be1820..d51e19f 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ into complex object composition. - [Dependencies](#dependencies) - [Versioning](#versioning) - [License](#license) +- [Support the Project](#support-the-project) ## Motivation https://medium.com/@go.jet/jet-5f3667efa0cc @@ -630,3 +631,10 @@ Typically, two releases are published each year — one in early spring and anot Copyright 2019-2025 Goran Bjelanovic Licensed under the Apache License, Version 2.0. + +## Support the Project + +Ways to donate: +- [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/E1E71CXDAE) +- BTC: bc1qtjhxe8mqx0yzff2l0f6stjpjj92kgwr0a53wxv +- ETH: 0xe98e4535C744c617e8E45828B63fDFf9367E3574 \ No newline at end of file From 436a72ae5c4ddde12ae0b637d4ea0bdee66e32fa Mon Sep 17 00:00:00 2001 From: Josh Kaplinsky <37640086+joshkaplinsky@users.noreply.github.com> Date: Thu, 10 Apr 2025 09:02:23 -0400 Subject: [PATCH 2/8] feat: skip model and sql gen options in cli --- cmd/jet/main.go | 34 +++++++++++++--------- generator/template/model_template.go | 16 +++++++--- generator/template/sql_builder_template.go | 11 +++++-- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/cmd/jet/main.go b/cmd/jet/main.go index 243a40d..8512e43 100644 --- a/cmd/jet/main.go +++ b/cmd/jet/main.go @@ -5,24 +5,24 @@ package main import ( "flag" "fmt" - "github.com/go-jet/jet/v2/internal/utils/errfmt" - "github.com/go-jet/jet/v2/internal/utils/strslice" "os" "strings" - "github.com/go-jet/jet/v2/generator/metadata" - sqlitegen "github.com/go-jet/jet/v2/generator/sqlite" - "github.com/go-jet/jet/v2/generator/template" - "github.com/go-jet/jet/v2/internal/jet" - "github.com/go-jet/jet/v2/mysql" - postgres2 "github.com/go-jet/jet/v2/postgres" - "github.com/go-jet/jet/v2/sqlite" - - mysqlgen "github.com/go-jet/jet/v2/generator/mysql" - postgresgen "github.com/go-jet/jet/v2/generator/postgres" _ "github.com/go-sql-driver/mysql" _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3" + + "github.com/go-jet/jet/v2/generator/metadata" + mysqlgen "github.com/go-jet/jet/v2/generator/mysql" + postgresgen "github.com/go-jet/jet/v2/generator/postgres" + sqlitegen "github.com/go-jet/jet/v2/generator/sqlite" + "github.com/go-jet/jet/v2/generator/template" + "github.com/go-jet/jet/v2/internal/jet" + "github.com/go-jet/jet/v2/internal/utils/errfmt" + "github.com/go-jet/jet/v2/internal/utils/strslice" + "github.com/go-jet/jet/v2/mysql" + postgres2 "github.com/go-jet/jet/v2/postgres" + "github.com/go-jet/jet/v2/sqlite" ) var ( @@ -42,6 +42,9 @@ var ( ignoreViews string ignoreEnums string + skipModel bool + skipSQLBuilder bool + destDir string modelPkg string tablePkg string @@ -73,6 +76,8 @@ func init() { flag.StringVar(&ignoreTables, "ignore-tables", "", `Comma-separated list of tables to ignore.`) flag.StringVar(&ignoreViews, "ignore-views", "", `Comma-separated list of views to ignore.`) flag.StringVar(&ignoreEnums, "ignore-enums", "", `Comma-separated list of enums to ignore.`) + flag.BoolVar(&skipModel, "skip-model", false, `Skip model generation.`) + flag.BoolVar(&skipSQLBuilder, "skip-sql-builder", false, `Skip SQL builder generation.`) flag.StringVar(&destDir, "path", "", "Destination directory for files generated.") flag.StringVar(&modelPkg, "rel-model-path", "model", "Relative path for the Model files package from the destination directory.") @@ -178,6 +183,7 @@ func usage() { "source", "dsn", "host", "port", "user", "password", "dbname", "schema", "params", "sslmode", "path", "ignore-tables", "ignore-views", "ignore-enums", + "skip-model", "skip-sql-builder", "rel-model-path", "rel-table-path", "rel-view-path", "rel-enum-path", } @@ -256,7 +262,7 @@ func genTemplate(dialect jet.Dialect, ignoreTables []string, ignoreViews []strin return template.Default(dialect). UseSchema(func(schemaMetaData metadata.Schema) template.Schema { return template.DefaultSchema(schemaMetaData). - UseModel(template.DefaultModel().UsePath(modelPkg). + UseModel(template.DefaultModel().ShouldSkip(skipModel).UsePath(modelPkg). UseTable(func(table metadata.Table) template.TableModel { if shouldSkipTable(table) { return template.TableModel{Skip: true} @@ -276,7 +282,7 @@ func genTemplate(dialect jet.Dialect, ignoreTables []string, ignoreViews []strin return template.DefaultEnumModel(enum) }), ). - UseSQLBuilder(template.DefaultSQLBuilder(). + UseSQLBuilder(template.DefaultSQLBuilder().ShouldSkip(skipSQLBuilder). UseTable(func(table metadata.Table) template.TableSQLBuilder { if shouldSkipTable(table) { return template.TableSQLBuilder{Skip: true} diff --git a/generator/template/model_template.go b/generator/template/model_template.go index 2b4ec8a..cd5c5f1 100644 --- a/generator/template/model_template.go +++ b/generator/template/model_template.go @@ -2,14 +2,16 @@ package template import ( "fmt" - "github.com/go-jet/jet/v2/generator/metadata" - "github.com/go-jet/jet/v2/internal/utils/dbidentifier" - "github.com/google/uuid" - "github.com/jackc/pgtype" "path/filepath" "reflect" "strings" "time" + + "github.com/google/uuid" + "github.com/jackc/pgtype" + + "github.com/go-jet/jet/v2/generator/metadata" + "github.com/go-jet/jet/v2/internal/utils/dbidentifier" ) // Model is template for model files generation @@ -50,6 +52,12 @@ func (m Model) UseEnum(enumFunc func(enumMetaData metadata.Enum) EnumModel) Mode return m } +// ShouldSkip returns new Model template with new skip flag set +func (m Model) ShouldSkip(skip bool) Model { + m.Skip = skip + return m +} + // DefaultModel returns default Model template implementation func DefaultModel() Model { return Model{ diff --git a/generator/template/sql_builder_template.go b/generator/template/sql_builder_template.go index dcb4e97..a06faed 100644 --- a/generator/template/sql_builder_template.go +++ b/generator/template/sql_builder_template.go @@ -2,12 +2,13 @@ package template import ( "fmt" - "github.com/go-jet/jet/v2/generator/metadata" - "github.com/go-jet/jet/v2/internal/utils/dbidentifier" "path/filepath" "slices" "strings" "unicode" + + "github.com/go-jet/jet/v2/generator/metadata" + "github.com/go-jet/jet/v2/internal/utils/dbidentifier" ) // SQLBuilder is template for generating sql builder files @@ -53,6 +54,12 @@ func (sb SQLBuilder) UseEnum(enumFunc func(enum metadata.Enum) EnumSQLBuilder) S return sb } +// ShouldSkip returns new SQLBuilder with new skip flag set +func (sb SQLBuilder) ShouldSkip(skip bool) SQLBuilder { + sb.Skip = skip + return sb +} + // TableSQLBuilder is template for generating table SQLBuilder files type TableSQLBuilder struct { Skip bool From e8e4cfc1e0f7a7dde5cfa6e8fe1821a6aa354685 Mon Sep 17 00:00:00 2001 From: Josh Kaplinsky <37640086+joshkaplinsky@users.noreply.github.com> Date: Thu, 10 Apr 2025 09:28:51 -0400 Subject: [PATCH 3/8] chore: add unit tests for code cov --- generator/template/model_template_test.go | 32 +++++++++++++++++-- .../template/sql_builder_template_test.go | 32 +++++++++++++++++-- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/generator/template/model_template_test.go b/generator/template/model_template_test.go index a7bbe28..0fce487 100644 --- a/generator/template/model_template_test.go +++ b/generator/template/model_template_test.go @@ -1,9 +1,11 @@ package template import ( - "github.com/go-jet/jet/v2/generator/metadata" - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" + + "github.com/go-jet/jet/v2/generator/metadata" ) func Test_TableModelField(t *testing.T) { @@ -43,3 +45,29 @@ func Test_TableModelField(t *testing.T) { Tags: nil, }) } + +func Test_Model_ShouldSkip(t *testing.T) { + tests := []struct { + name string + initial Model + skip bool + }{ + { + name: "True", + initial: Model{Skip: false}, + skip: true, + }, + { + name: "False", + initial: Model{Skip: true}, + skip: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + updatedModel := tt.initial.ShouldSkip(tt.skip) + require.Equal(t, tt.skip, updatedModel.Skip) + }) + } +} diff --git a/generator/template/sql_builder_template_test.go b/generator/template/sql_builder_template_test.go index b980a60..9d6dcdb 100644 --- a/generator/template/sql_builder_template_test.go +++ b/generator/template/sql_builder_template_test.go @@ -1,9 +1,11 @@ package template import ( - "github.com/go-jet/jet/v2/generator/metadata" - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" + + "github.com/go-jet/jet/v2/generator/metadata" ) func TestToGoEnumValueIdentifier(t *testing.T) { @@ -35,3 +37,29 @@ func TestColumnRenameReserved(t *testing.T) { }) } } + +func Test_SQLBuilder_ShouldSkip(t *testing.T) { + tests := []struct { + name string + initial SQLBuilder + skip bool + }{ + { + name: "True", + initial: SQLBuilder{Skip: false}, + skip: true, + }, + { + name: "False", + initial: SQLBuilder{Skip: true}, + skip: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + updatedBuilder := tt.initial.ShouldSkip(tt.skip) + require.Equal(t, tt.skip, updatedBuilder.Skip) + }) + } +} From 0d361c88637ad0e947c284955eed3c7e12464224 Mon Sep 17 00:00:00 2001 From: Josh Kaplinsky <37640086+joshkaplinsky@users.noreply.github.com> Date: Mon, 14 Apr 2025 08:36:13 -0400 Subject: [PATCH 4/8] chore: remove unit tests --- generator/template/model_template_test.go | 32 ++----------------- .../template/sql_builder_template_test.go | 32 ++----------------- 2 files changed, 4 insertions(+), 60 deletions(-) diff --git a/generator/template/model_template_test.go b/generator/template/model_template_test.go index 0fce487..a7bbe28 100644 --- a/generator/template/model_template_test.go +++ b/generator/template/model_template_test.go @@ -1,11 +1,9 @@ package template import ( - "testing" - - "github.com/stretchr/testify/require" - "github.com/go-jet/jet/v2/generator/metadata" + "github.com/stretchr/testify/require" + "testing" ) func Test_TableModelField(t *testing.T) { @@ -45,29 +43,3 @@ func Test_TableModelField(t *testing.T) { Tags: nil, }) } - -func Test_Model_ShouldSkip(t *testing.T) { - tests := []struct { - name string - initial Model - skip bool - }{ - { - name: "True", - initial: Model{Skip: false}, - skip: true, - }, - { - name: "False", - initial: Model{Skip: true}, - skip: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - updatedModel := tt.initial.ShouldSkip(tt.skip) - require.Equal(t, tt.skip, updatedModel.Skip) - }) - } -} diff --git a/generator/template/sql_builder_template_test.go b/generator/template/sql_builder_template_test.go index 9d6dcdb..b980a60 100644 --- a/generator/template/sql_builder_template_test.go +++ b/generator/template/sql_builder_template_test.go @@ -1,11 +1,9 @@ package template import ( - "testing" - - "github.com/stretchr/testify/require" - "github.com/go-jet/jet/v2/generator/metadata" + "github.com/stretchr/testify/require" + "testing" ) func TestToGoEnumValueIdentifier(t *testing.T) { @@ -37,29 +35,3 @@ func TestColumnRenameReserved(t *testing.T) { }) } } - -func Test_SQLBuilder_ShouldSkip(t *testing.T) { - tests := []struct { - name string - initial SQLBuilder - skip bool - }{ - { - name: "True", - initial: SQLBuilder{Skip: false}, - skip: true, - }, - { - name: "False", - initial: SQLBuilder{Skip: true}, - skip: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - updatedBuilder := tt.initial.ShouldSkip(tt.skip) - require.Equal(t, tt.skip, updatedBuilder.Skip) - }) - } -} From aae1041e594cf9cac566367488b48c44ae1ddc5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:58:26 +0000 Subject: [PATCH 5/8] Bump golang.org/x/crypto from 0.31.0 to 0.35.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.31.0 to 0.35.0. - [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.35.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.35.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 5 +++-- go.sum | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 18ffeb4..db45f7d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,7 @@ module github.com/go-jet/jet/v2 go 1.22 +toolchain go1.24.1 // used by jet generator require ( @@ -45,8 +46,8 @@ require ( github.com/volatiletech/randomize v0.0.1 // indirect github.com/volatiletech/strmangle v0.0.1 // indirect golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/crypto v0.35.0 // indirect + golang.org/x/text v0.22.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index e43b263..333ef44 100644 --- a/go.sum +++ b/go.sum @@ -186,8 +186,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -238,8 +238,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= From d7b395c2fe1a587987f36931f38fa0477d297f29 Mon Sep 17 00:00:00 2001 From: go-jet Date: Fri, 18 Apr 2025 12:37:11 +0200 Subject: [PATCH 6/8] go.mod tidy --- go.mod | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index db45f7d..3a4ecbc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,7 @@ module github.com/go-jet/jet/v2 -go 1.22 +go 1.23.0 + toolchain go1.24.1 // used by jet generator From d621dcb1297c073df6c8e1432e1a52aa87731736 Mon Sep 17 00:00:00 2001 From: go-jet Date: Fri, 18 Apr 2025 12:40:41 +0200 Subject: [PATCH 7/8] go.mod tidy --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 3a4ecbc..ae6bb92 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/go-jet/jet/v2 go 1.23.0 -toolchain go1.24.1 +toolchain go1.23.8 // used by jet generator require ( From 5c4068dec3260cafd050345869f86682c19c3794 Mon Sep 17 00:00:00 2001 From: Josh Kaplinsky <37640086+joshkaplinsky@users.noreply.github.com> Date: Fri, 18 Apr 2025 08:21:02 -0400 Subject: [PATCH 8/8] chore: add ShouldSkip to generator template tests --- tests/postgres/generator_template_test.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tests/postgres/generator_template_test.go b/tests/postgres/generator_template_test.go index a63c3d2..b295862 100644 --- a/tests/postgres/generator_template_test.go +++ b/tests/postgres/generator_template_test.go @@ -3,6 +3,11 @@ package postgres import ( "database/sql" "fmt" + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" + "github.com/go-jet/jet/v2/generator/metadata" "github.com/go-jet/jet/v2/generator/postgres" "github.com/go-jet/jet/v2/generator/template" @@ -12,9 +17,6 @@ import ( postgres2 "github.com/go-jet/jet/v2/postgres" "github.com/go-jet/jet/v2/tests/dbconfig" file2 "github.com/go-jet/jet/v2/tests/internal/utils/file" - "github.com/stretchr/testify/require" - "path/filepath" - "testing" ) const tempTestDir = "./.tempTestDir" @@ -62,9 +64,7 @@ func TestGeneratorTemplate_Model_SkipGeneration(t *testing.T) { template.Default(postgres2.Dialect). UseSchema(func(schemaMetaData metadata.Schema) template.Schema { return template.DefaultSchema(schemaMetaData). - UseModel(template.Model{ - Skip: true, - }) + UseModel(template.DefaultModel().ShouldSkip(true)) }), ) @@ -80,9 +80,7 @@ func TestGeneratorTemplate_SQLBuilder_SkipGeneration(t *testing.T) { template.Default(postgres2.Dialect). UseSchema(func(schemaMetaData metadata.Schema) template.Schema { return template.DefaultSchema(schemaMetaData). - UseSQLBuilder(template.SQLBuilder{ - Skip: true, - }) + UseSQLBuilder(template.DefaultSQLBuilder().ShouldSkip(true)) }), )