Skip to content

Commit 971e2df

Browse files
author
Nikita Konin
committed
fix -ignore-tables, -ignore-enums and -ignore-views when -dsn is present
1 parent f17d05e commit 971e2df

File tree

3 files changed

+138
-78
lines changed

3 files changed

+138
-78
lines changed

cmd/jet/main.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package main
33
import (
44
"flag"
55
"fmt"
6+
"os"
7+
"strings"
8+
69
"github.com/go-jet/jet/v2/generator/metadata"
710
sqlitegen "github.com/go-jet/jet/v2/generator/sqlite"
811
"github.com/go-jet/jet/v2/generator/template"
@@ -11,8 +14,6 @@ import (
1114
"github.com/go-jet/jet/v2/mysql"
1215
postgres2 "github.com/go-jet/jet/v2/postgres"
1316
"github.com/go-jet/jet/v2/sqlite"
14-
"os"
15-
"strings"
1617

1718
mysqlgen "github.com/go-jet/jet/v2/generator/mysql"
1819
postgresgen "github.com/go-jet/jet/v2/generator/postgres"
@@ -112,8 +113,9 @@ func main() {
112113

113114
switch source {
114115
case "postgresql", "postgres":
116+
generatorTemplate := genTemplate(postgres2.Dialect, ignoreTablesList, ignoreViewsList, ignoreEnumsList)
115117
if dsn != "" {
116-
err = postgresgen.GenerateDSN(dsn, schemaName, destDir)
118+
err = postgresgen.GenerateDSN(dsn, schemaName, destDir, generatorTemplate)
117119
break
118120
}
119121
dbConn := postgresgen.DBConnection{
@@ -131,12 +133,13 @@ func main() {
131133
err = postgresgen.Generate(
132134
destDir,
133135
dbConn,
134-
genTemplate(postgres2.Dialect, ignoreTablesList, ignoreViewsList, ignoreEnumsList),
136+
generatorTemplate,
135137
)
136138

137139
case "mysql", "mysqlx", "mariadb":
140+
generatorTemplate := genTemplate(mysql.Dialect, ignoreTablesList, ignoreViewsList, ignoreEnumsList)
138141
if dsn != "" {
139-
err = mysqlgen.GenerateDSN(dsn, destDir)
142+
err = mysqlgen.GenerateDSN(dsn, destDir, generatorTemplate)
140143
break
141144
}
142145
dbConn := mysqlgen.DBConnection{
@@ -151,7 +154,7 @@ func main() {
151154
err = mysqlgen.Generate(
152155
destDir,
153156
dbConn,
154-
genTemplate(mysql.Dialect, ignoreTablesList, ignoreViewsList, ignoreEnumsList),
157+
generatorTemplate,
155158
)
156159
case "sqlite":
157160
if dsn == "" {

tests/mysql/generator_test.go

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -88,45 +88,70 @@ func TestCmdGenerator(t *testing.T) {
8888
}
8989

9090
func TestIgnoreTablesViewsEnums(t *testing.T) {
91-
cmd := exec.Command("jet",
92-
"-source=MySQL",
93-
"-dbname=dvds",
94-
"-host="+dbconfig.MySqLHost,
95-
"-port="+strconv.Itoa(dbconfig.MySQLPort),
96-
"-user="+dbconfig.MySQLUser,
97-
"-password="+dbconfig.MySQLPassword,
98-
"-ignore-tables=actor,ADDRESS,Category, city ,country,staff,store,rental",
99-
"-ignore-views=actor_info,CUSTomER_LIST, film_list",
100-
"-ignore-enums=film_list_rating,film_rating",
101-
"-path="+genTestDir3)
91+
tests := []struct {
92+
name string
93+
args []string
94+
}{
95+
{
96+
name: "with dsn",
97+
args: []string{
98+
"-dsn=mysql://" + dbconfig.MySQLConnectionString(sourceIsMariaDB(), "dvds"),
99+
"-ignore-tables=actor,ADDRESS,Category, city ,country,staff,store,rental",
100+
"-ignore-views=actor_info,CUSTomER_LIST, film_list",
101+
"-ignore-enums=film_list_rating,film_rating",
102+
"-path=" + genTestDir3,
103+
},
104+
},
105+
{
106+
name: "without dsn",
107+
args: []string{
108+
"-source=MySQL",
109+
"-dbname=dvds",
110+
"-host=" + dbconfig.MySqLHost,
111+
"-port=" + strconv.Itoa(dbconfig.MySQLPort),
112+
"-user=" + dbconfig.MySQLUser,
113+
"-password=" + dbconfig.MySQLPassword,
114+
"-ignore-tables=actor,ADDRESS,Category, city ,country,staff,store,rental",
115+
"-ignore-views=actor_info,CUSTomER_LIST, film_list",
116+
"-ignore-enums=film_list_rating,film_rating",
117+
"-path=" + genTestDir3,
118+
},
119+
},
120+
}
102121

103-
cmd.Stderr = os.Stderr
104-
cmd.Stdout = os.Stdout
122+
for _, tt := range tests {
123+
t.Run(tt.name, func(t *testing.T) {
124+
cmd := exec.Command("jet", tt.args...)
105125

106-
err := cmd.Run()
107-
require.NoError(t, err)
126+
cmd.Stderr = os.Stderr
127+
cmd.Stdout = os.Stdout
108128

109-
tableSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/table")
110-
require.NoError(t, err)
111-
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "customer.go", "film.go", "film_actor.go",
112-
"film_category.go", "film_text.go", "inventory.go", "language.go", "payment.go")
129+
err := cmd.Run()
130+
require.NoError(t, err)
113131

114-
viewSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/view")
115-
require.NoError(t, err)
116-
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
117-
"sales_by_film_category.go", "sales_by_store.go", "staff_list.go")
132+
tableSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/table")
133+
require.NoError(t, err)
134+
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "customer.go", "film.go", "film_actor.go",
135+
"film_category.go", "film_text.go", "inventory.go", "language.go", "payment.go")
118136

119-
enumFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/enum")
120-
require.NoError(t, err)
121-
testutils.AssertFileNamesEqual(t, enumFiles, "nicer_but_slower_film_list_rating.go")
137+
viewSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/view")
138+
require.NoError(t, err)
139+
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
140+
"sales_by_film_category.go", "sales_by_store.go", "staff_list.go")
122141

123-
modelFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/model")
124-
require.NoError(t, err)
142+
enumFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/enum")
143+
require.NoError(t, err)
144+
testutils.AssertFileNamesEqual(t, enumFiles, "nicer_but_slower_film_list_rating.go")
125145

126-
testutils.AssertFileNamesEqual(t, modelFiles,
127-
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
128-
"payment.go", "nicer_but_slower_film_list_rating.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
129-
"sales_by_store.go", "staff_list.go")
146+
modelFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/model")
147+
require.NoError(t, err)
148+
149+
testutils.AssertFileNamesEqual(t, modelFiles,
150+
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
151+
"payment.go", "nicer_but_slower_film_list_rating.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
152+
"sales_by_store.go", "staff_list.go")
153+
})
154+
}
130155
}
131156

132157
func assertGeneratedFiles(t *testing.T) {

tests/postgres/generator_test.go

Lines changed: 72 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -93,56 +93,88 @@ func TestCmdGenerator(t *testing.T) {
9393
}
9494

9595
func TestGeneratorIgnoreTables(t *testing.T) {
96-
err := os.RemoveAll(genTestDir2)
97-
require.NoError(t, err)
96+
tests := []struct {
97+
name string
98+
args []string
99+
}{
100+
{
101+
name: "with dsn",
102+
args: []string{
103+
"-dsn=" + fmt.Sprintf("postgresql://%s:%s@%s:%d/%s?sslmode=disable",
104+
dbconfig.PgUser,
105+
dbconfig.PgPassword,
106+
dbconfig.PgHost,
107+
dbconfig.PgPort,
108+
"jetdb",
109+
),
110+
"-schema=dvds",
111+
"-ignore-tables=actor,ADDRESS,country, Film , cITY,",
112+
"-ignore-views=Actor_info, FILM_LIST ,staff_list",
113+
"-ignore-enums=mpaa_rating",
114+
"-path=" + genTestDir2,
115+
},
116+
},
117+
{
118+
name: "without dsn",
119+
args: []string{
120+
"-source=PostgreSQL",
121+
"-host=localhost",
122+
"-port=" + strconv.Itoa(dbconfig.PgPort),
123+
"-user=jet",
124+
"-password=jet",
125+
"-dbname=jetdb",
126+
"-schema=dvds",
127+
"-ignore-tables=actor,ADDRESS,country, Film , cITY,",
128+
"-ignore-views=Actor_info, FILM_LIST ,staff_list",
129+
"-ignore-enums=mpaa_rating",
130+
"-path=" + genTestDir2,
131+
},
132+
},
133+
}
98134

99-
cmd := exec.Command("jet",
100-
"-source=PostgreSQL",
101-
"-host=localhost",
102-
"-port="+strconv.Itoa(dbconfig.PgPort),
103-
"-user=jet",
104-
"-password=jet",
105-
"-dbname=jetdb",
106-
"-schema=dvds",
107-
"-ignore-tables=actor,ADDRESS,country, Film , cITY,",
108-
"-ignore-views=Actor_info, FILM_LIST ,staff_list",
109-
"-ignore-enums=mpaa_rating",
110-
"-path="+genTestDir2)
135+
for _, tt := range tests {
136+
t.Run(tt.name, func(t *testing.T) {
137+
err := os.RemoveAll(genTestDir2)
138+
require.NoError(t, err)
111139

112-
fmt.Println(cmd.Args)
113-
cmd.Stderr = os.Stderr
114-
cmd.Stdout = os.Stdout
140+
cmd := exec.Command("jet", tt.args...)
115141

116-
err = cmd.Run()
117-
require.NoError(t, err)
142+
fmt.Println(cmd.Args)
143+
cmd.Stderr = os.Stderr
144+
cmd.Stdout = os.Stdout
118145

119-
// Table SQL Builder files
120-
tableSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/table")
121-
require.NoError(t, err)
146+
err = cmd.Run()
147+
require.NoError(t, err)
122148

123-
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "category.go",
124-
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
125-
"payment.go", "rental.go", "staff.go", "store.go")
149+
// Table SQL Builder files
150+
tableSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/table")
151+
require.NoError(t, err)
126152

127-
// View SQL Builder files
128-
viewSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/view")
129-
require.NoError(t, err)
153+
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "category.go",
154+
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
155+
"payment.go", "rental.go", "staff.go", "store.go")
130156

131-
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
132-
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go")
157+
// View SQL Builder files
158+
viewSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/view")
159+
require.NoError(t, err)
133160

134-
// Enums SQL Builder files
135-
_, err = ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
136-
require.Error(t, err, "open ./.gentestdata2/jetdb/dvds/enum: no such file or directory")
161+
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
162+
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go")
137163

138-
modelFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/model")
139-
require.NoError(t, err)
164+
// Enums SQL Builder files
165+
_, err = ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
166+
require.Error(t, err, "open ./.gentestdata2/jetdb/dvds/enum: no such file or directory")
140167

141-
testutils.AssertFileNamesEqual(t, modelFiles, "category.go",
142-
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
143-
"payment.go", "rental.go", "staff.go", "store.go",
144-
"nicer_but_slower_film_list.go", "sales_by_film_category.go",
145-
"customer_list.go", "sales_by_store.go")
168+
modelFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/model")
169+
require.NoError(t, err)
170+
171+
testutils.AssertFileNamesEqual(t, modelFiles, "category.go",
172+
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
173+
"payment.go", "rental.go", "staff.go", "store.go",
174+
"nicer_but_slower_film_list.go", "sales_by_film_category.go",
175+
"customer_list.go", "sales_by_store.go")
176+
})
177+
}
146178
}
147179

148180
func TestGenerator(t *testing.T) {

0 commit comments

Comments
 (0)