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 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 diff --git a/go.mod b/go.mod index 18ffeb4..ae6bb92 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/go-jet/jet/v2 -go 1.22 +go 1.23.0 + +toolchain go1.23.8 // used by jet generator require ( @@ -45,8 +47,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= 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)) }), )