Add more UseSchema tests.
Rename newly generated file to avoid potentional conflict with tables named table or views named view.
This commit is contained in:
parent
a9aa25416a
commit
5e34bef288
10 changed files with 250 additions and 160 deletions
|
|
@ -99,9 +99,8 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
|
||||||
|
|
||||||
var tableSqlBuilderSetSchemaTemplate = `package {{package}}
|
var tableSqlBuilderSetSchemaTemplate = `package {{package}}
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated {{type}} SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
{{- range .}}
|
{{- range .}}
|
||||||
{{ .InstanceName }} = {{ .InstanceName }}.FromSchema(schema)
|
{{ .InstanceName }} = {{ .InstanceName }}.FromSchema(schema)
|
||||||
|
|
|
||||||
|
|
@ -183,19 +183,20 @@ func processTableSQLBuilder(fileTypes, dirPath string,
|
||||||
|
|
||||||
func generateUseSchemaFunc(dirPath, fileTypes string, builders []TableSQLBuilder) {
|
func generateUseSchemaFunc(dirPath, fileTypes string, builders []TableSQLBuilder) {
|
||||||
|
|
||||||
basePath := path.Join(dirPath, builders[0].Path)
|
|
||||||
|
|
||||||
fmt.Printf("Generating global `UseSchema` method for %s\n", fileTypes)
|
|
||||||
text, err := generateTemplate(
|
text, err := generateTemplate(
|
||||||
autoGenWarningTemplate+tableSqlBuilderSetSchemaTemplate,
|
autoGenWarningTemplate+tableSqlBuilderSetSchemaTemplate,
|
||||||
builders,
|
builders,
|
||||||
template.FuncMap{
|
template.FuncMap{
|
||||||
"package": func() string { return builders[0].PackageName() },
|
"package": func() string { return builders[0].PackageName() },
|
||||||
|
"type": func() string { return fileTypes },
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
throw.OnError(err)
|
throw.OnError(err)
|
||||||
|
|
||||||
err = utils.SaveGoFile(basePath, fileTypes, text)
|
basePath := path.Join(dirPath, builders[0].Path)
|
||||||
|
fileName := fileTypes + "_use_schema"
|
||||||
|
|
||||||
|
err = utils.SaveGoFile(basePath, fileName, text)
|
||||||
throw.OnError(err)
|
throw.OnError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,12 +253,15 @@ func AssertFileContent(t *testing.T, filePath string, expectedContent string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssertFileNamesEqual check if all filesInfos are contained in fileNames
|
// AssertFileNamesEqual check if all filesInfos are contained in fileNames
|
||||||
func AssertFileNamesEqual(t *testing.T, fileInfos []os.FileInfo, fileNames ...string) {
|
func AssertFileNamesEqual(t *testing.T, dirPath string, fileNames ...string) {
|
||||||
require.Equal(t, len(fileInfos), len(fileNames))
|
files, err := ioutil.ReadDir(dirPath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, len(files), len(fileNames))
|
||||||
|
|
||||||
fileNamesMap := map[string]bool{}
|
fileNamesMap := map[string]bool{}
|
||||||
|
|
||||||
for _, fileInfo := range fileInfos {
|
for _, fileInfo := range files {
|
||||||
fileNamesMap[fileInfo.Name()] = true
|
fileNamesMap[fileInfo.Name()] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package mysql
|
package mysql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
@ -130,24 +129,15 @@ func TestIgnoreTablesViewsEnums(t *testing.T) {
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/table")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/table", "customer.go", "film.go", "film_actor.go",
|
||||||
require.NoError(t, err)
|
"film_category.go", "film_text.go", "inventory.go", "language.go", "payment.go", "table_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "customer.go", "film.go", "film_actor.go",
|
|
||||||
"film_category.go", "film_text.go", "inventory.go", "language.go", "payment.go", "table.go")
|
|
||||||
|
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/view")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/view", "nicer_but_slower_film_list.go",
|
||||||
require.NoError(t, err)
|
"sales_by_film_category.go", "sales_by_store.go", "staff_list.go", "view_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
|
|
||||||
"sales_by_film_category.go", "sales_by_store.go", "staff_list.go", "view.go")
|
|
||||||
|
|
||||||
enumFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/enum")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/enum", "nicer_but_slower_film_list_rating.go")
|
||||||
require.NoError(t, err)
|
|
||||||
testutils.AssertFileNamesEqual(t, enumFiles, "nicer_but_slower_film_list_rating.go")
|
|
||||||
|
|
||||||
modelFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/model")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/model",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles,
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "nicer_but_slower_film_list_rating.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
"payment.go", "nicer_but_slower_film_list_rating.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
||||||
"sales_by_store.go", "staff_list.go")
|
"sales_by_store.go", "staff_list.go")
|
||||||
|
|
@ -157,38 +147,26 @@ func TestIgnoreTablesViewsEnums(t *testing.T) {
|
||||||
|
|
||||||
func assertGeneratedFiles(t *testing.T) {
|
func assertGeneratedFiles(t *testing.T) {
|
||||||
// Table SQL Builder files
|
// Table SQL Builder files
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/table")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/table", "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go", "table.go")
|
"payment.go", "rental.go", "staff.go", "store.go", "table_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileContent(t, genTestDir3+"/dvds/table/actor.go", actorSQLBuilderFile)
|
testutils.AssertFileContent(t, genTestDir3+"/dvds/table/actor.go", actorSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, genTestDir3+"/dvds/table/table.go", tableSetSchemaFile)
|
testutils.AssertFileContent(t, genTestDir3+"/dvds/table/table_use_schema.go", tableUseSchemaFile)
|
||||||
|
|
||||||
// View SQL Builder files
|
// View SQL Builder files
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/view")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/view", "actor_info.go", "film_list.go", "nicer_but_slower_film_list.go",
|
||||||
require.NoError(t, err)
|
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go", "staff_list.go", "view_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "actor_info.go", "film_list.go", "nicer_but_slower_film_list.go",
|
|
||||||
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go", "staff_list.go", "view.go")
|
|
||||||
|
|
||||||
testutils.AssertFileContent(t, genTestDir3+"/dvds/view/actor_info.go", actorInfoSQLBuilderFile)
|
testutils.AssertFileContent(t, genTestDir3+"/dvds/view/actor_info.go", actorInfoSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, genTestDir3+"/dvds/view/view.go", viewSetSchemaFile)
|
testutils.AssertFileContent(t, genTestDir3+"/dvds/view/view_use_schema.go", viewUseSchemaFile)
|
||||||
|
|
||||||
// Enums SQL Builder files
|
// Enums SQL Builder files
|
||||||
enumFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/enum")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/enum", "film_rating.go", "film_list_rating.go", "nicer_but_slower_film_list_rating.go")
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, enumFiles, "film_rating.go", "film_list_rating.go", "nicer_but_slower_film_list_rating.go")
|
|
||||||
testutils.AssertFileContent(t, genTestDir3+"/dvds/enum/film_rating.go", mpaaRatingEnumFile)
|
testutils.AssertFileContent(t, genTestDir3+"/dvds/enum/film_rating.go", mpaaRatingEnumFile)
|
||||||
|
|
||||||
// Model files
|
// Model files
|
||||||
modelFiles, err := ioutil.ReadDir(genTestDir3 + "/dvds/model")
|
testutils.AssertFileNamesEqual(t, genTestDir3+"/dvds/model", "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go",
|
"payment.go", "rental.go", "staff.go", "store.go",
|
||||||
"film_rating.go", "film_list_rating.go", "nicer_but_slower_film_list_rating.go",
|
"film_rating.go", "film_list_rating.go", "nicer_but_slower_film_list_rating.go",
|
||||||
|
|
@ -332,7 +310,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
var tableSetSchemaFile = `
|
var tableUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -342,9 +320,8 @@ var tableSetSchemaFile = `
|
||||||
|
|
||||||
package table
|
package table
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
Actor = Actor.FromSchema(schema)
|
Actor = Actor.FromSchema(schema)
|
||||||
Address = Address.FromSchema(schema)
|
Address = Address.FromSchema(schema)
|
||||||
|
|
@ -473,7 +450,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
var viewSetSchemaFile = `
|
var viewUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -483,9 +460,8 @@ var viewSetSchemaFile = `
|
||||||
|
|
||||||
package view
|
package view
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
ActorInfo = ActorInfo.FromSchema(schema)
|
ActorInfo = ActorInfo.FromSchema(schema)
|
||||||
CustomerList = CustomerList.FromSchema(schema)
|
CustomerList = CustomerList.FromSchema(schema)
|
||||||
|
|
|
||||||
|
|
@ -928,6 +928,36 @@ LIMIT 5;
|
||||||
require.Equal(t, dest.Films[4].Title, "AFRICAN EGG")
|
require.Equal(t, dest.Films[4].Title, "AFRICAN EGG")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUseSchema(t *testing.T) {
|
||||||
|
UseSchema("dvds2")
|
||||||
|
defer UseSchema("dvds")
|
||||||
|
|
||||||
|
stmt := SELECT(
|
||||||
|
Film.FilmID,
|
||||||
|
Film.Title,
|
||||||
|
Film.LanguageID,
|
||||||
|
).FROM(
|
||||||
|
Film,
|
||||||
|
).WHERE(
|
||||||
|
Film.Title.EQ(String("AFRICAN EGG")),
|
||||||
|
)
|
||||||
|
|
||||||
|
testutils.AssertDebugStatementSql(t, stmt, `
|
||||||
|
SELECT film.film_id AS "film.film_id",
|
||||||
|
film.title AS "film.title",
|
||||||
|
film.language_id AS "film.language_id"
|
||||||
|
FROM dvds2.film
|
||||||
|
WHERE film.title = 'AFRICAN EGG';
|
||||||
|
`)
|
||||||
|
|
||||||
|
var dest model.Film
|
||||||
|
err := stmt.Query(db, &dest)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, dest.FilmID, uint16(5))
|
||||||
|
require.Equal(t, dest.Title, "AFRICAN EGG")
|
||||||
|
require.Equal(t, dest.LanguageID, uint8(1))
|
||||||
|
}
|
||||||
|
|
||||||
func TestLateral(t *testing.T) {
|
func TestLateral(t *testing.T) {
|
||||||
skipForMariaDB(t) // MariaDB does not implement LATERAL
|
skipForMariaDB(t) // MariaDB does not implement LATERAL
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -883,6 +883,36 @@ ORDER BY "first10Artist"."Artist.ArtistId";
|
||||||
require.Equal(t, dest[0].Album[0].Title, "Plays Metallica By Four Cellos")
|
require.Equal(t, dest[0].Album[0].Title, "Plays Metallica By Four Cellos")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUseSchema(t *testing.T) {
|
||||||
|
UseSchema("chinook2")
|
||||||
|
defer UseSchema("chinook")
|
||||||
|
|
||||||
|
stmt := SELECT(
|
||||||
|
Artist.AllColumns,
|
||||||
|
).FROM(
|
||||||
|
Artist,
|
||||||
|
).WHERE(Artist.ArtistId.EQ(Int(11)))
|
||||||
|
|
||||||
|
testutils.AssertDebugStatementSql(t, stmt, `
|
||||||
|
SELECT "Artist"."ArtistId" AS "Artist.ArtistId",
|
||||||
|
"Artist"."Name" AS "Artist.Name"
|
||||||
|
FROM chinook2."Artist"
|
||||||
|
WHERE "Artist"."ArtistId" = 11;
|
||||||
|
`)
|
||||||
|
|
||||||
|
var artist model.Artist
|
||||||
|
|
||||||
|
err := stmt.Query(db, &artist)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
testutils.AssertJSON(t, artist, `
|
||||||
|
{
|
||||||
|
"ArtistId": 11,
|
||||||
|
"Name": "Black Label Society"
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
func TestMultiTenantSameSchemaDifferentTablePrefix(t *testing.T) {
|
func TestMultiTenantSameSchemaDifferentTablePrefix(t *testing.T) {
|
||||||
|
|
||||||
var selectAlbumsFrom = func(tenant string) SelectStatement {
|
var selectAlbumsFrom = func(tenant string) SelectStatement {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"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"
|
||||||
"github.com/go-jet/jet/v2/internal/3rdparty/snaker"
|
"github.com/go-jet/jet/v2/internal/3rdparty/snaker"
|
||||||
|
"github.com/go-jet/jet/v2/internal/testutils"
|
||||||
"github.com/go-jet/jet/v2/internal/utils"
|
"github.com/go-jet/jet/v2/internal/utils"
|
||||||
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"
|
||||||
|
|
@ -207,28 +208,65 @@ func TestGeneratorTemplate_SQLBuilder_SkipTableAndEnum(t *testing.T) {
|
||||||
return template.DefaultSchema(schemaMetaData).
|
return template.DefaultSchema(schemaMetaData).
|
||||||
UseSQLBuilder(template.DefaultSQLBuilder().
|
UseSQLBuilder(template.DefaultSQLBuilder().
|
||||||
UseTable(func(table metadata.Table) template.TableSQLBuilder {
|
UseTable(func(table metadata.Table) template.TableSQLBuilder {
|
||||||
return template.TableSQLBuilder{
|
if table.Name != "city" {
|
||||||
Skip: true,
|
return template.TableSQLBuilder{Skip: true}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return template.DefaultTableSQLBuilder(table)
|
||||||
}).
|
}).
|
||||||
UseView(func(table metadata.Table) template.TableSQLBuilder {
|
UseView(func(view metadata.Table) template.ViewSQLBuilder {
|
||||||
return template.TableSQLBuilder{
|
if view.Name != "film_list" {
|
||||||
Skip: true,
|
return template.TableSQLBuilder{Skip: true}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return template.DefaultViewSQLBuilder(view)
|
||||||
}).
|
}).
|
||||||
UseEnum(func(enumMetaData metadata.Enum) template.EnumSQLBuilder {
|
UseEnum(func(enumMetaData metadata.Enum) template.EnumSQLBuilder {
|
||||||
return template.EnumSQLBuilder{
|
return template.EnumSQLBuilder{Skip: true}
|
||||||
Skip: true,
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
file2.NotExists(t, defaultTableSQLBuilderFilePath, "actor.go")
|
testutils.AssertFileNamesEqual(t, defaultTableSQLBuilderFilePath, "city.go", "table_use_schema.go")
|
||||||
file2.NotExists(t, defaultViewSQLBuilderFilePath, "actor_info.go")
|
testutils.AssertFileNamesEqual(t, defaultViewSQLBuilderFilePath, "film_list.go", "view_use_schema.go")
|
||||||
file2.NotExists(t, defaultEnumSQLBuilderFilePath, "mpaa_rating.go")
|
file2.NotExists(t, defaultEnumSQLBuilderFilePath, "mpaa_rating.go")
|
||||||
|
|
||||||
|
testutils.AssertFileContent(t, defaultTableSQLBuilderFilePath+"/table_use_schema.go", `
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
|
||||||
|
// this method only once at the beginning of the program.
|
||||||
|
func UseSchema(schema string) {
|
||||||
|
City = City.FromSchema(schema)
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
testutils.AssertFileContent(t, defaultViewSQLBuilderFilePath+"/view_use_schema.go", `
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package view
|
||||||
|
|
||||||
|
// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
|
||||||
|
// this method only once at the beginning of the program.
|
||||||
|
func UseSchema(schema string) {
|
||||||
|
FilmList = FilmList.FromSchema(schema)
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
|
func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
|
||||||
|
|
@ -269,6 +307,37 @@ func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
|
||||||
require.Contains(t, actorInfo, "var V_ActorInfo = newActorInfoViewSQLBuilder(\"dvds\", \"actor_info\", \"\")")
|
require.Contains(t, actorInfo, "var V_ActorInfo = newActorInfoViewSQLBuilder(\"dvds\", \"actor_info\", \"\")")
|
||||||
mpaaRating := file2.Exists(t, defaultEnumSQLBuilderFilePath, "dvds_mpaa_rating_enum.go")
|
mpaaRating := file2.Exists(t, defaultEnumSQLBuilderFilePath, "dvds_mpaa_rating_enum.go")
|
||||||
require.Contains(t, mpaaRating, "var MpaaRatingEnumSQLBuilder = &struct {")
|
require.Contains(t, mpaaRating, "var MpaaRatingEnumSQLBuilder = &struct {")
|
||||||
|
|
||||||
|
testutils.AssertFileContent(t, defaultTableSQLBuilderFilePath+"/table_use_schema.go", `
|
||||||
|
//
|
||||||
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// WARNING: Changes to this file may cause incorrect behavior
|
||||||
|
// and will be lost if the code is regenerated
|
||||||
|
//
|
||||||
|
|
||||||
|
package table
|
||||||
|
|
||||||
|
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
|
||||||
|
// this method only once at the beginning of the program.
|
||||||
|
func UseSchema(schema string) {
|
||||||
|
T_Actor = T_Actor.FromSchema(schema)
|
||||||
|
T_Address = T_Address.FromSchema(schema)
|
||||||
|
T_Category = T_Category.FromSchema(schema)
|
||||||
|
T_City = T_City.FromSchema(schema)
|
||||||
|
T_Country = T_Country.FromSchema(schema)
|
||||||
|
T_Customer = T_Customer.FromSchema(schema)
|
||||||
|
T_Film = T_Film.FromSchema(schema)
|
||||||
|
T_FilmActor = T_FilmActor.FromSchema(schema)
|
||||||
|
T_FilmCategory = T_FilmCategory.FromSchema(schema)
|
||||||
|
T_Inventory = T_Inventory.FromSchema(schema)
|
||||||
|
T_Language = T_Language.FromSchema(schema)
|
||||||
|
T_Payment = T_Payment.FromSchema(schema)
|
||||||
|
T_Rental = T_Rental.FromSchema(schema)
|
||||||
|
T_Staff = T_Staff.FromSchema(schema)
|
||||||
|
T_Store = T_Store.FromSchema(schema)
|
||||||
|
}
|
||||||
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGeneratorTemplate_Model_AddTags(t *testing.T) {
|
func TestGeneratorTemplate_Model_AddTags(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package postgres
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"github.com/go-jet/jet/v2/tests/internal/utils/file"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
@ -148,28 +148,20 @@ func TestGeneratorIgnoreTables(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Table SQL Builder files
|
// Table SQL Builder files
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/table")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/table",
|
||||||
require.NoError(t, err)
|
"category.go", "customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||||
|
"payment.go", "rental.go", "staff.go", "store.go", "table_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "category.go",
|
|
||||||
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
|
||||||
"payment.go", "rental.go", "staff.go", "store.go", "table.go")
|
|
||||||
|
|
||||||
// View SQL Builder files
|
// View SQL Builder files
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/view")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/view",
|
||||||
require.NoError(t, err)
|
"nicer_but_slower_film_list.go", "sales_by_film_category.go", "customer_list.go",
|
||||||
|
"sales_by_store.go", "view_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "nicer_but_slower_film_list.go",
|
|
||||||
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go", "view.go")
|
|
||||||
|
|
||||||
// Enums SQL Builder files
|
// Enums SQL Builder files
|
||||||
_, err = ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
|
file.NotExists(t, "./.gentestdata2/jetdb/dvds/enum", "mpaa_rating.go")
|
||||||
require.Error(t, err, "open ./.gentestdata2/jetdb/dvds/enum: no such file or directory")
|
|
||||||
|
|
||||||
modelFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/model")
|
// Model files
|
||||||
require.NoError(t, err)
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/model", "category.go",
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "category.go",
|
|
||||||
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
"customer.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go",
|
"payment.go", "rental.go", "staff.go", "store.go",
|
||||||
"nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
"nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
||||||
|
|
@ -236,38 +228,28 @@ func TestGeneratorSpecialCharacters(t *testing.T) {
|
||||||
|
|
||||||
func assertGeneratedFiles(t *testing.T) {
|
func assertGeneratedFiles(t *testing.T) {
|
||||||
// Table SQL Builder files
|
// Table SQL Builder files
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/table")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/table",
|
||||||
require.NoError(t, err)
|
"actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go", "table.go")
|
"payment.go", "rental.go", "staff.go", "store.go", "table_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/table/actor.go", actorSQLBuilderFile)
|
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/table/actor.go", actorSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/table/table.go", actorSQLBuilderTableFile)
|
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/table/table_use_schema.go", tableUseSchemaFile)
|
||||||
|
|
||||||
// View SQL Builder files
|
// View SQL Builder files
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/view")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/view",
|
||||||
require.NoError(t, err)
|
"actor_info.go", "film_list.go", "nicer_but_slower_film_list.go",
|
||||||
|
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go", "staff_list.go", "view_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "actor_info.go", "film_list.go", "nicer_but_slower_film_list.go",
|
|
||||||
"sales_by_film_category.go", "customer_list.go", "sales_by_store.go", "staff_list.go", "view.go")
|
|
||||||
|
|
||||||
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/view/actor_info.go", actorInfoSQLBuilderFile)
|
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/view/actor_info.go", actorInfoSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/view/view.go", actorInfoSQLBuilderViewFile)
|
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/view/view_use_schema.go", viewUseSchemaFile)
|
||||||
|
|
||||||
// Enums SQL Builder files
|
// Enums SQL Builder files
|
||||||
enumFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/enum", "mpaa_rating.go")
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, enumFiles, "mpaa_rating.go")
|
|
||||||
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/enum/mpaa_rating.go", mpaaRatingEnumFile)
|
testutils.AssertFileContent(t, "./.gentestdata2/jetdb/dvds/enum/mpaa_rating.go", mpaaRatingEnumFile)
|
||||||
|
|
||||||
// Model files
|
// Model files
|
||||||
modelFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/model")
|
testutils.AssertFileNamesEqual(t, "./.gentestdata2/jetdb/dvds/model", "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go", "mpaa_rating.go",
|
"payment.go", "rental.go", "staff.go", "store.go", "mpaa_rating.go",
|
||||||
"actor_info.go", "film_list.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
"actor_info.go", "film_list.go", "nicer_but_slower_film_list.go", "sales_by_film_category.go",
|
||||||
|
|
@ -390,7 +372,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
var actorSQLBuilderTableFile = `
|
var tableUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -400,9 +382,8 @@ var actorSQLBuilderTableFile = `
|
||||||
|
|
||||||
package table
|
package table
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
Actor = Actor.FromSchema(schema)
|
Actor = Actor.FromSchema(schema)
|
||||||
Address = Address.FromSchema(schema)
|
Address = Address.FromSchema(schema)
|
||||||
|
|
@ -531,7 +512,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
var actorInfoSQLBuilderViewFile = `
|
var viewUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -541,9 +522,8 @@ var actorInfoSQLBuilderViewFile = `
|
||||||
|
|
||||||
package view
|
package view
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
ActorInfo = ActorInfo.FromSchema(schema)
|
ActorInfo = ActorInfo.FromSchema(schema)
|
||||||
CustomerList = CustomerList.FromSchema(schema)
|
CustomerList = CustomerList.FromSchema(schema)
|
||||||
|
|
@ -562,26 +542,17 @@ func TestGeneratedAllTypesSQLBuilderFiles(t *testing.T) {
|
||||||
modelDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/model/")
|
modelDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/model/")
|
||||||
tableDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/table/")
|
tableDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/table/")
|
||||||
|
|
||||||
enumFiles, err := ioutil.ReadDir(enumDir)
|
testutils.AssertFileNamesEqual(t, enumDir, "mood.go", "level.go")
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, enumFiles, "mood.go", "level.go")
|
|
||||||
testutils.AssertFileContent(t, enumDir+"/mood.go", moodEnumContent)
|
testutils.AssertFileContent(t, enumDir+"/mood.go", moodEnumContent)
|
||||||
testutils.AssertFileContent(t, enumDir+"/level.go", levelEnumContent)
|
testutils.AssertFileContent(t, enumDir+"/level.go", levelEnumContent)
|
||||||
|
|
||||||
modelFiles, err := ioutil.ReadDir(modelDir)
|
testutils.AssertFileNamesEqual(t, modelDir, "all_types.go", "all_types_view.go", "employee.go", "link.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "all_types.go", "all_types_view.go", "employee.go", "link.go",
|
|
||||||
"mood.go", "person.go", "person_phone.go", "weird_names_table.go", "level.go", "user.go", "floats.go", "people.go")
|
"mood.go", "person.go", "person_phone.go", "weird_names_table.go", "level.go", "user.go", "floats.go", "people.go")
|
||||||
|
|
||||||
testutils.AssertFileContent(t, modelDir+"/all_types.go", allTypesModelContent)
|
testutils.AssertFileContent(t, modelDir+"/all_types.go", allTypesModelContent)
|
||||||
|
|
||||||
tableFiles, err := ioutil.ReadDir(tableDir)
|
testutils.AssertFileNamesEqual(t, tableDir, "all_types.go", "employee.go", "link.go",
|
||||||
require.NoError(t, err)
|
"person.go", "person_phone.go", "weird_names_table.go", "user.go", "floats.go", "people.go", "table_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, tableFiles, "all_types.go", "employee.go", "link.go",
|
|
||||||
"person.go", "person_phone.go", "weird_names_table.go", "user.go", "floats.go", "table.go", "people.go")
|
|
||||||
|
|
||||||
testutils.AssertFileContent(t, tableDir+"/all_types.go", allTypesTableContent)
|
testutils.AssertFileContent(t, tableDir+"/all_types.go", allTypesTableContent)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package sqlite
|
package sqlite
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
@ -88,52 +87,36 @@ func TestCmdGeneratorIgnoreTablesViewsEnums(t *testing.T) {
|
||||||
err := cmd.Run()
|
err := cmd.Run()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir(genDestDir + "/table")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/table", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "country.go",
|
|
||||||
"customer.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "staff.go", "table.go")
|
"payment.go", "staff.go", "table_use_schema.go")
|
||||||
|
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir(genDestDir + "/view")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/view", "sales_by_film_category.go",
|
||||||
require.NoError(t, err)
|
"sales_by_store.go", "view_use_schema.go")
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "sales_by_film_category.go",
|
|
||||||
"sales_by_store.go", "view.go")
|
|
||||||
|
|
||||||
modelFiles, err := ioutil.ReadDir(genDestDir + "/model")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/model", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "country.go",
|
|
||||||
"customer.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "staff.go", "sales_by_film_category.go", "sales_by_store.go")
|
"payment.go", "staff.go", "sales_by_film_category.go", "sales_by_store.go")
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertGeneratedFiles(t *testing.T) {
|
func assertGeneratedFiles(t *testing.T) {
|
||||||
// Table SQL Builder files
|
// Table SQL Builder files
|
||||||
tableSQLBuilderFiles, err := ioutil.ReadDir(genDestDir + "/table")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/table", "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, tableSQLBuilderFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go", "table.go")
|
"payment.go", "rental.go", "staff.go", "store.go", "table_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileContent(t, genDestDir+"/table/actor.go", actorSQLBuilderFile)
|
testutils.AssertFileContent(t, genDestDir+"/table/actor.go", actorSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, genDestDir+"/table/table.go", actorSQLBuilderTableFile)
|
testutils.AssertFileContent(t, genDestDir+"/table/table_use_schema.go", tableUseSchemaFile)
|
||||||
|
|
||||||
// View SQL Builder files
|
// View SQL Builder files
|
||||||
viewSQLBuilderFiles, err := ioutil.ReadDir(genDestDir + "/view")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/view", "film_list.go", "sales_by_film_category.go",
|
||||||
require.NoError(t, err)
|
"customer_list.go", "sales_by_store.go", "staff_list.go", "view_use_schema.go")
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, viewSQLBuilderFiles, "film_list.go", "sales_by_film_category.go",
|
|
||||||
"customer_list.go", "sales_by_store.go", "staff_list.go", "view.go")
|
|
||||||
|
|
||||||
testutils.AssertFileContent(t, genDestDir+"/view/film_list.go", filmListSQLBuilderFile)
|
testutils.AssertFileContent(t, genDestDir+"/view/film_list.go", filmListSQLBuilderFile)
|
||||||
testutils.AssertFileContent(t, genDestDir+"/view/view.go", filmListSQLBuilderViewFile)
|
testutils.AssertFileContent(t, genDestDir+"/view/view_use_schema.go", viewUseSchemaFile)
|
||||||
|
|
||||||
// Model files
|
// Model files
|
||||||
modelFiles, err := ioutil.ReadDir(genDestDir + "/model")
|
testutils.AssertFileNamesEqual(t, genDestDir+"/model", "actor.go", "address.go", "category.go", "city.go", "country.go",
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
testutils.AssertFileNamesEqual(t, modelFiles, "actor.go", "address.go", "category.go", "city.go", "country.go",
|
|
||||||
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
"customer.go", "film.go", "film_actor.go", "film_category.go", "film_text.go", "inventory.go", "language.go",
|
||||||
"payment.go", "rental.go", "staff.go", "store.go",
|
"payment.go", "rental.go", "staff.go", "store.go",
|
||||||
"film_list.go", "sales_by_film_category.go",
|
"film_list.go", "sales_by_film_category.go",
|
||||||
|
|
@ -228,7 +211,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
const actorSQLBuilderTableFile = `
|
const tableUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -238,9 +221,8 @@ const actorSQLBuilderTableFile = `
|
||||||
|
|
||||||
package table
|
package table
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
Actor = Actor.FromSchema(schema)
|
Actor = Actor.FromSchema(schema)
|
||||||
Address = Address.FromSchema(schema)
|
Address = Address.FromSchema(schema)
|
||||||
|
|
@ -360,7 +342,7 @@ func newFilmListTableImpl(schemaName, tableName, alias string) filmListTable {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
const filmListSQLBuilderViewFile = `
|
const viewUseSchemaFile = `
|
||||||
//
|
//
|
||||||
// Code generated by go-jet DO NOT EDIT.
|
// Code generated by go-jet DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
@ -370,9 +352,8 @@ const filmListSQLBuilderViewFile = `
|
||||||
|
|
||||||
package view
|
package view
|
||||||
|
|
||||||
// UseSchema changes all global tables/views with the value returned
|
// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
|
||||||
// returned by calling FromSchema on them. Passing an empty string to this function
|
// this method only once at the beginning of the program.
|
||||||
// will cause queries to be generated without any table/view alias.
|
|
||||||
func UseSchema(schema string) {
|
func UseSchema(schema string) {
|
||||||
CustomerList = CustomerList.FromSchema(schema)
|
CustomerList = CustomerList.FromSchema(schema)
|
||||||
FilmList = FilmList.FromSchema(schema)
|
FilmList = FilmList.FromSchema(schema)
|
||||||
|
|
|
||||||
|
|
@ -728,6 +728,36 @@ LIMIT 10;
|
||||||
require.Len(t, dest, 7)
|
require.Len(t, dest, 7)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUseSchema(t *testing.T) {
|
||||||
|
table.UseSchema("chinook")
|
||||||
|
defer table.UseSchema("")
|
||||||
|
|
||||||
|
stmt := SELECT(
|
||||||
|
table.Artists.AllColumns,
|
||||||
|
).FROM(
|
||||||
|
table.Artists,
|
||||||
|
).WHERE(table.Artists.ArtistId.EQ(Int(11)))
|
||||||
|
|
||||||
|
testutils.AssertDebugStatementSql(t, stmt, strings.Replace(`
|
||||||
|
SELECT artists.''ArtistId'' AS "artists.ArtistId",
|
||||||
|
artists.''Name'' AS "artists.Name"
|
||||||
|
FROM chinook.artists
|
||||||
|
WHERE artists.''ArtistId'' = 11;
|
||||||
|
`, "''", "`", -1))
|
||||||
|
|
||||||
|
var artist model2.Artists
|
||||||
|
|
||||||
|
err := stmt.Query(db, &artist)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
testutils.AssertJSON(t, artist, `
|
||||||
|
{
|
||||||
|
"ArtistId": 11,
|
||||||
|
"Name": "Black Label Society"
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
func TestRowsScan(t *testing.T) {
|
func TestRowsScan(t *testing.T) {
|
||||||
stmt :=
|
stmt :=
|
||||||
SELECT(
|
SELECT(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue