Add DefaultAlias option to TableSQLBuilder

This commit is contained in:
quirell 2023-08-02 10:03:59 +09:00
parent a2eb15e566
commit 39f9996b34
4 changed files with 55 additions and 1 deletions

View file

@ -24,7 +24,7 @@ import (
"github.com/go-jet/jet/v2/{{dialect.PackageName}}" "github.com/go-jet/jet/v2/{{dialect.PackageName}}"
) )
var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "") var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "{{tableTemplate.DefaultAlias}}")
type {{structImplName}} struct { type {{structImplName}} struct {
{{dialect.PackageName}}.Table {{dialect.PackageName}}.Table

View file

@ -59,6 +59,7 @@ type TableSQLBuilder struct {
FileName string FileName string
InstanceName string InstanceName string
TypeName string TypeName string
DefaultAlias string
Column func(columnMetaData metadata.Column) TableSQLBuilderColumn Column func(columnMetaData metadata.Column) TableSQLBuilderColumn
} }
@ -72,6 +73,7 @@ func DefaultTableSQLBuilder(tableMetaData metadata.Table) TableSQLBuilder {
FileName: dbidentifier.ToGoFileName(tableMetaData.Name), FileName: dbidentifier.ToGoFileName(tableMetaData.Name),
InstanceName: dbidentifier.ToGoIdentifier(tableMetaData.Name), InstanceName: dbidentifier.ToGoIdentifier(tableMetaData.Name),
TypeName: dbidentifier.ToGoIdentifier(tableMetaData.Name) + "Table", TypeName: dbidentifier.ToGoIdentifier(tableMetaData.Name) + "Table",
DefaultAlias: "",
Column: DefaultTableSQLBuilderColumn, Column: DefaultTableSQLBuilderColumn,
} }
} }
@ -112,6 +114,12 @@ func (tb TableSQLBuilder) UseTypeName(name string) TableSQLBuilder {
return tb return tb
} }
// UseDefaultAlias returns new TableSQLBuilder with new default alias set
func (tb TableSQLBuilder) UseDefaultAlias(defaultAlias string) TableSQLBuilder {
tb.DefaultAlias = defaultAlias
return tb
}
// UseColumn returns new TableSQLBuilder with new column template function set // UseColumn returns new TableSQLBuilder with new column template function set
func (tb TableSQLBuilder) UseColumn(columnsFunc func(column metadata.Column) TableSQLBuilderColumn) TableSQLBuilder { func (tb TableSQLBuilder) UseColumn(columnsFunc func(column metadata.Column) TableSQLBuilderColumn) TableSQLBuilder {
tb.Column = columnsFunc tb.Column = columnsFunc

View file

@ -285,6 +285,29 @@ func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
require.Contains(t, mpaaRating, "var FilmRatingEnumSQLBuilder = &struct {") require.Contains(t, mpaaRating, "var FilmRatingEnumSQLBuilder = &struct {")
} }
func TestGeneratorTemplate_SQLBuilder_DefaultAlias(t *testing.T) {
err := mysql2.Generate(
tempTestDir,
dbConnection("dvds"),
template.Default(postgres2.Dialect).
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
return template.DefaultSchema(schemaMetaData).
UseSQLBuilder(template.DefaultSQLBuilder().
UseTable(func(table metadata.Table) template.TableSQLBuilder {
if table.Name == "actor" {
return template.DefaultTableSQLBuilder(table).UseDefaultAlias("actors")
}
return template.DefaultTableSQLBuilder(table)
}),
)
}),
)
require.Nil(t, err)
actor := file2.Exists(t, defaultTableSQLBuilderFilePath, "actor.go")
require.Contains(t, actor, "var Actor = newActorTable(\"dvds\", \"actor\", \"actors\")")
}
func TestGeneratorTemplate_Model_AddTags(t *testing.T) { func TestGeneratorTemplate_Model_AddTags(t *testing.T) {
err := mysql2.Generate( err := mysql2.Generate(

View file

@ -341,6 +341,29 @@ func UseSchema(schema string) {
`) `)
} }
func TestGeneratorTemplate_SQLBuilder_DefaultAlias(t *testing.T) {
err := postgres.Generate(
tempTestDir,
dbConnection,
template.Default(postgres2.Dialect).
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
return template.DefaultSchema(schemaMetaData).
UseSQLBuilder(template.DefaultSQLBuilder().
UseTable(func(table metadata.Table) template.TableSQLBuilder {
if table.Name == "actor" {
return template.DefaultTableSQLBuilder(table).UseDefaultAlias("actors")
}
return template.DefaultTableSQLBuilder(table)
}),
)
}),
)
require.Nil(t, err)
actor := file2.Exists(t, defaultTableSQLBuilderFilePath, "actor.go")
require.Contains(t, actor, "var Actor = newActorTable(\"dvds\", \"actor\", \"actors\")")
}
func TestGeneratorTemplate_Model_AddTags(t *testing.T) { func TestGeneratorTemplate_Model_AddTags(t *testing.T) {
err := postgres.Generate( err := postgres.Generate(