Merge remote-tracking branch 'upstream/master' into develop
This commit is contained in:
commit
3f52b182b5
7 changed files with 65 additions and 36 deletions
|
|
@ -43,6 +43,7 @@ into complex object composition.
|
||||||
- [Dependencies](#dependencies)
|
- [Dependencies](#dependencies)
|
||||||
- [Versioning](#versioning)
|
- [Versioning](#versioning)
|
||||||
- [License](#license)
|
- [License](#license)
|
||||||
|
- [Support the Project](#support-the-project)
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
https://medium.com/@go.jet/jet-5f3667efa0cc
|
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
|
Copyright 2019-2025 Goran Bjelanovic
|
||||||
Licensed under the Apache License, Version 2.0.
|
Licensed under the Apache License, Version 2.0.
|
||||||
|
|
||||||
|
## Support the Project
|
||||||
|
|
||||||
|
Ways to donate:
|
||||||
|
- [](https://ko-fi.com/E1E71CXDAE)
|
||||||
|
- BTC: bc1qtjhxe8mqx0yzff2l0f6stjpjj92kgwr0a53wxv
|
||||||
|
- ETH: 0xe98e4535C744c617e8E45828B63fDFf9367E3574
|
||||||
|
|
@ -5,24 +5,24 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/go-jet/jet/v2/internal/utils/errfmt"
|
|
||||||
"github.com/go-jet/jet/v2/internal/utils/strslice"
|
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"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/go-sql-driver/mysql"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "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 (
|
var (
|
||||||
|
|
@ -42,6 +42,9 @@ var (
|
||||||
ignoreViews string
|
ignoreViews string
|
||||||
ignoreEnums string
|
ignoreEnums string
|
||||||
|
|
||||||
|
skipModel bool
|
||||||
|
skipSQLBuilder bool
|
||||||
|
|
||||||
destDir string
|
destDir string
|
||||||
modelPkg string
|
modelPkg string
|
||||||
tablePkg string
|
tablePkg string
|
||||||
|
|
@ -73,6 +76,8 @@ func init() {
|
||||||
flag.StringVar(&ignoreTables, "ignore-tables", "", `Comma-separated list of tables to ignore.`)
|
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(&ignoreViews, "ignore-views", "", `Comma-separated list of views to ignore.`)
|
||||||
flag.StringVar(&ignoreEnums, "ignore-enums", "", `Comma-separated list of enums 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(&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.")
|
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",
|
"source", "dsn", "host", "port", "user", "password", "dbname", "schema", "params", "sslmode",
|
||||||
"path",
|
"path",
|
||||||
"ignore-tables", "ignore-views", "ignore-enums",
|
"ignore-tables", "ignore-views", "ignore-enums",
|
||||||
|
"skip-model", "skip-sql-builder",
|
||||||
"rel-model-path", "rel-table-path", "rel-view-path", "rel-enum-path",
|
"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).
|
return template.Default(dialect).
|
||||||
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
||||||
return template.DefaultSchema(schemaMetaData).
|
return template.DefaultSchema(schemaMetaData).
|
||||||
UseModel(template.DefaultModel().UsePath(modelPkg).
|
UseModel(template.DefaultModel().ShouldSkip(skipModel).UsePath(modelPkg).
|
||||||
UseTable(func(table metadata.Table) template.TableModel {
|
UseTable(func(table metadata.Table) template.TableModel {
|
||||||
if shouldSkipTable(table) {
|
if shouldSkipTable(table) {
|
||||||
return template.TableModel{Skip: true}
|
return template.TableModel{Skip: true}
|
||||||
|
|
@ -276,7 +282,7 @@ func genTemplate(dialect jet.Dialect, ignoreTables []string, ignoreViews []strin
|
||||||
return template.DefaultEnumModel(enum)
|
return template.DefaultEnumModel(enum)
|
||||||
}),
|
}),
|
||||||
).
|
).
|
||||||
UseSQLBuilder(template.DefaultSQLBuilder().
|
UseSQLBuilder(template.DefaultSQLBuilder().ShouldSkip(skipSQLBuilder).
|
||||||
UseTable(func(table metadata.Table) template.TableSQLBuilder {
|
UseTable(func(table metadata.Table) template.TableSQLBuilder {
|
||||||
if shouldSkipTable(table) {
|
if shouldSkipTable(table) {
|
||||||
return template.TableSQLBuilder{Skip: true}
|
return template.TableSQLBuilder{Skip: true}
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,16 @@ package template
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"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"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"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
|
// Model is template for model files generation
|
||||||
|
|
@ -50,6 +52,12 @@ func (m Model) UseEnum(enumFunc func(enumMetaData metadata.Enum) EnumModel) Mode
|
||||||
return m
|
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
|
// DefaultModel returns default Model template implementation
|
||||||
func DefaultModel() Model {
|
func DefaultModel() Model {
|
||||||
return Model{
|
return Model{
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,13 @@ package template
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/go-jet/jet/v2/generator/metadata"
|
|
||||||
"github.com/go-jet/jet/v2/internal/utils/dbidentifier"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode"
|
"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
|
// 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
|
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
|
// TableSQLBuilder is template for generating table SQLBuilder files
|
||||||
type TableSQLBuilder struct {
|
type TableSQLBuilder struct {
|
||||||
Skip bool
|
Skip bool
|
||||||
|
|
|
||||||
8
go.mod
8
go.mod
|
|
@ -1,6 +1,8 @@
|
||||||
module github.com/go-jet/jet/v2
|
module github.com/go-jet/jet/v2
|
||||||
|
|
||||||
go 1.22
|
go 1.23.0
|
||||||
|
|
||||||
|
toolchain go1.23.8
|
||||||
|
|
||||||
// used by jet generator
|
// used by jet generator
|
||||||
require (
|
require (
|
||||||
|
|
@ -45,8 +47,8 @@ require (
|
||||||
github.com/volatiletech/randomize v0.0.1 // indirect
|
github.com/volatiletech/randomize v0.0.1 // indirect
|
||||||
github.com/volatiletech/strmangle 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/arch v0.0.0-20210923205945-b76863e36670 // indirect
|
||||||
golang.org/x/crypto v0.31.0 // indirect
|
golang.org/x/crypto v0.35.0 // indirect
|
||||||
golang.org/x/text v0.21.0 // indirect
|
golang.org/x/text v0.22.0 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
|
||||||
8
go.sum
8
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.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.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||||
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
|
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.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
||||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
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/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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
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.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.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.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
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-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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,11 @@ package postgres
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/go-jet/jet/v2/generator/metadata"
|
"github.com/go-jet/jet/v2/generator/metadata"
|
||||||
"github.com/go-jet/jet/v2/generator/postgres"
|
"github.com/go-jet/jet/v2/generator/postgres"
|
||||||
"github.com/go-jet/jet/v2/generator/template"
|
"github.com/go-jet/jet/v2/generator/template"
|
||||||
|
|
@ -12,9 +17,6 @@ import (
|
||||||
postgres2 "github.com/go-jet/jet/v2/postgres"
|
postgres2 "github.com/go-jet/jet/v2/postgres"
|
||||||
"github.com/go-jet/jet/v2/tests/dbconfig"
|
"github.com/go-jet/jet/v2/tests/dbconfig"
|
||||||
file2 "github.com/go-jet/jet/v2/tests/internal/utils/file"
|
file2 "github.com/go-jet/jet/v2/tests/internal/utils/file"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"path/filepath"
|
|
||||||
"testing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const tempTestDir = "./.tempTestDir"
|
const tempTestDir = "./.tempTestDir"
|
||||||
|
|
@ -62,9 +64,7 @@ func TestGeneratorTemplate_Model_SkipGeneration(t *testing.T) {
|
||||||
template.Default(postgres2.Dialect).
|
template.Default(postgres2.Dialect).
|
||||||
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
||||||
return template.DefaultSchema(schemaMetaData).
|
return template.DefaultSchema(schemaMetaData).
|
||||||
UseModel(template.Model{
|
UseModel(template.DefaultModel().ShouldSkip(true))
|
||||||
Skip: true,
|
|
||||||
})
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -80,9 +80,7 @@ func TestGeneratorTemplate_SQLBuilder_SkipGeneration(t *testing.T) {
|
||||||
template.Default(postgres2.Dialect).
|
template.Default(postgres2.Dialect).
|
||||||
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
|
||||||
return template.DefaultSchema(schemaMetaData).
|
return template.DefaultSchema(schemaMetaData).
|
||||||
UseSQLBuilder(template.SQLBuilder{
|
UseSQLBuilder(template.DefaultSQLBuilder().ShouldSkip(true))
|
||||||
Skip: true,
|
|
||||||
})
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue