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/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)) }), )