Merge pull request #484 from joshkaplinsky/joshkaplinsky/skip-gen-cli
feat: add support for skipping model and sql builder in CLI
This commit is contained in:
commit
30e1077719
4 changed files with 48 additions and 29 deletions
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}),
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue