Renamed generated schema func to UseSchema.

This commit is contained in:
Jay 2022-12-05 17:26:52 +05:30
parent 04c1a51ba7
commit 1bf48d640a
6 changed files with 46 additions and 41 deletions

View file

@ -99,10 +99,10 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
var tableSqlBuilderSetSchemaTemplate = `package {{package}}
// {{schemaMethodName}} changes all global tables/views with the value returned
// UseSchema changes all global tables/views with the value returned
// returned by calling FromSchema on them. Passing an empty string to this function
// will cause queries to be generated without any table/view alias.
func {{schemaMethodName}}(schema string) {
func UseSchema(schema string) {
{{- range .}}
{{ .InstanceName }} = {{ .InstanceName }}.FromSchema(schema)
{{- end}}

View file

@ -177,25 +177,20 @@ func processTableSQLBuilder(fileTypes, dirPath string,
}
if len(generatedBuilders) > 0 {
generateUseSchemaFunc(dirPath, fileTypes, schemaMetaData, generatedBuilders)
generateUseSchemaFunc(dirPath, fileTypes, generatedBuilders)
}
}
func generateUseSchemaFunc(dirPath, fileTypes string, schemaMetadata metadata.Schema, builders []TableSQLBuilder) {
func generateUseSchemaFunc(dirPath, fileTypes string, builders []TableSQLBuilder) {
basePath := path.Join(dirPath, builders[0].Path)
schemaIdentifier := utils.ToGoIdentifier(schemaMetadata.Name)
methodName := fmt.Sprintf("Use%sSchema", schemaIdentifier)
fmt.Printf("Generating global `%s` method for %s\n", methodName, fileTypes)
fmt.Printf("Generating global `UseSchema` method for %s\n", fileTypes)
text, err := generateTemplate(
autoGenWarningTemplate+tableSqlBuilderSetSchemaTemplate,
builders,
template.FuncMap{
"package": func() string { return builders[0].PackageName() },
"schemaMethodName": func() string { return methodName },
"package": func() string { return builders[0].PackageName() },
},
)
throw.OnError(err)

View file

@ -322,10 +322,10 @@ var tableSetSchemaFile = `
package table
// UseDvdsSchema changes all global tables/views with the value returned
// UseSchema changes all global tables/views with the value returned
// returned by calling FromSchema on them. Passing an empty string to this function
// will cause queries to be generated without any table/view alias.
func UseDvdsSchema(schema string) {
func UseSchema(schema string) {
Actor = Actor.FromSchema(schema)
Address = Address.FromSchema(schema)
Category = Category.FromSchema(schema)
@ -463,10 +463,10 @@ var viewSetSchemaFile = `
package view
// UseDvdsSchema changes all global tables/views with the value returned
// UseSchema changes all global tables/views with the value returned
// returned by calling FromSchema on them. Passing an empty string to this function
// will cause queries to be generated without any table/view alias.
func UseDvdsSchema(schema string) {
func UseSchema(schema string) {
ActorInfo = ActorInfo.FromSchema(schema)
CustomerList = CustomerList.FromSchema(schema)
FilmList = FilmList.FromSchema(schema)

View file

@ -0,0 +1,25 @@
package mysql
import (
"testing"
"github.com/go-jet/jet/v2/internal/testutils"
. "github.com/go-jet/jet/v2/mysql"
. "github.com/go-jet/jet/v2/tests/.gentestdata/mysql/dvds/table"
)
func TestUpdateWithJoin(t *testing.T) {
statement := Staff.INNER_JOIN(Address, Address.AddressID.EQ(Staff.AddressID)).
UPDATE(Staff.LastName).
SET(String("New staff name")).
WHERE(Staff.StaffID.EQ(Int(1)))
testutils.AssertStatementSql(t, statement, `
UPDATE dvds.staff
INNER JOIN dvds.address ON (address.address_id = staff.address_id)
SET last_name = ?
WHERE staff.staff_id = ?;
`, "New staff name", int64(1))
testutils.AssertExecAndRollback(t, statement, db)
}

View file

@ -3,14 +3,15 @@ package mysql
import (
"context"
"database/sql"
"github.com/go-jet/jet/v2/internal/testutils"
. "github.com/go-jet/jet/v2/mysql"
. "github.com/go-jet/jet/v2/tests/.gentestdata/mysql/dvds/table"
"github.com/go-jet/jet/v2/tests/.gentestdata/mysql/test_sample/model"
. "github.com/go-jet/jet/v2/tests/.gentestdata/mysql/test_sample/table"
"github.com/stretchr/testify/require"
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/go-jet/jet/v2/internal/testutils"
. "github.com/go-jet/jet/v2/mysql"
"github.com/go-jet/jet/v2/tests/.gentestdata/mysql/test_sample/model"
. "github.com/go-jet/jet/v2/tests/.gentestdata/mysql/test_sample/table"
)
func TestUpdateValues(t *testing.T) {
@ -259,22 +260,6 @@ func TestUpdateExecContext(t *testing.T) {
require.Error(t, err, "context deadline exceeded")
}
func TestUpdateWithJoin(t *testing.T) {
statement := Staff.INNER_JOIN(Address, Address.AddressID.EQ(Staff.AddressID)).
UPDATE(Staff.LastName).
SET(String("New staff name")).
WHERE(Staff.StaffID.EQ(Int(1)))
testutils.AssertStatementSql(t, statement, `
UPDATE dvds.staff
INNER JOIN dvds.address ON (address.address_id = staff.address_id)
SET last_name = ?
WHERE staff.staff_id = ?;
`, "New staff name", int64(1))
testutils.AssertExecAndRollback(t, statement, db)
}
func TestUpdateOptimizerHints(t *testing.T) {
stmt := Link.UPDATE(Link.AllColumns).

View file

@ -400,10 +400,10 @@ var actorSQLBuilderTableFile = `
package table
// UseDvdsSchema changes all global tables/views with the value returned
// UseSchema changes all global tables/views with the value returned
// returned by calling FromSchema on them. Passing an empty string to this function
// will cause queries to be generated without any table/view alias.
func UseDvdsSchema(schema string) {
func UseSchema(schema string) {
Film = Film.FromSchema(schema)
Address = Address.FromSchema(schema)
Actor = Actor.FromSchema(schema)
@ -541,10 +541,10 @@ var actorInfoSQLBuilderViewFile = `
package view
// UseDvdsSchema changes all global tables/views with the value returned
// UseSchema changes all global tables/views with the value returned
// returned by calling FromSchema on them. Passing an empty string to this function
// will cause queries to be generated without any table/view alias.
func UseDvdsSchema(schema string) {
func UseSchema(schema string) {
ActorInfo = ActorInfo.FromSchema(schema)
CustomerList = CustomerList.FromSchema(schema)
FilmList = FilmList.FromSchema(schema)