From 3a599d2374f763f30b56504df94707e5530cae29 Mon Sep 17 00:00:00 2001 From: niraj kumar Date: Thu, 7 Oct 2021 23:54:09 +0700 Subject: [PATCH 1/2] reproduce error --- go.mod | 18 +++++++----------- main_test.go | 39 +++++++++++++++++++++++++++++++++------ 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 49733cdd..34e1c2b3 100644 --- a/go.mod +++ b/go.mod @@ -3,18 +3,14 @@ module gorm.io/playground go 1.16 require ( - github.com/denisenkom/go-mssqldb v0.10.0 // indirect - github.com/jackc/pgproto3/v2 v2.0.7 // indirect - github.com/jackc/pgx/v4 v4.11.0 // indirect - github.com/mattn/go-sqlite3 v1.14.7 // indirect - golang.org/x/crypto v0.0.0-20210505212654-3497b51f5e64 // indirect - golang.org/x/text v0.3.6 // indirect + github.com/denisenkom/go-mssqldb v0.11.0 // indirect + github.com/go-kit/kit v0.10.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - gorm.io/driver/mysql v1.0.6 - gorm.io/driver/postgres v1.1.0 - gorm.io/driver/sqlite v1.1.4 - gorm.io/driver/sqlserver v1.0.7 - gorm.io/gorm v1.21.9 + gorm.io/driver/mysql v1.1.2 + gorm.io/driver/postgres v1.1.2 + gorm.io/driver/sqlite v1.1.5 + gorm.io/driver/sqlserver v1.0.9 + gorm.io/gorm v1.21.15 ) replace gorm.io/gorm => ./gorm diff --git a/main_test.go b/main_test.go index 60a388f7..76687bf6 100644 --- a/main_test.go +++ b/main_test.go @@ -1,20 +1,47 @@ package main import ( + "fmt" + "strings" "testing" + + "gorm.io/gorm" ) // GORM_REPO: https://github.com/go-gorm/gorm.git // GORM_BRANCH: master // TEST_DRIVERS: sqlite, mysql, postgres, sqlserver -func TestGORM(t *testing.T) { - user := User{Name: "jinzhu"} +type NewUser struct { + gorm.Model + Name string `gorm:"index"` + City string `gorm:"index"` + Table string `gorm:"-"` +} + +/* +NOTE: https://gorm.io/docs/v2_release_note.html#Breaking-Changes +*/ +func UserTable(u *NewUser) func(*gorm.DB) *gorm.DB { + return func(db *gorm.DB) *gorm.DB { + return db.Table(fmt.Sprintf("newuser_%s", strings.ToLower(u.Table))) + } +} - DB.Create(&user) +// TableName which is cached +func (u *NewUser) TableName() string { + return fmt.Sprintf("newuser_%s", u.Table) +} - var result User - if err := DB.First(&result, user.ID).Error; err != nil { - t.Errorf("Failed, got error: %v", err) +func TestGORM(t *testing.T) { + tableName := []string{"a", "b", "c"} + for _, v := range tableName { + nu := &NewUser{ + Table: v, + } + DB.Scopes(UserTable(nu)).Migrator().AutoMigrate(&nu) + if err := DB.Scopes(UserTable(nu)).Migrator().AutoMigrate(&nu); err != nil { + t.Errorf("Failed, got error: %v", err) + } } } From 325adb10df6d3db8adce65a3a89b1999fed68c61 Mon Sep 17 00:00:00 2001 From: niraj kumar Date: Fri, 8 Oct 2021 00:25:47 +0700 Subject: [PATCH 2/2] removed tablename --- main_test.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/main_test.go b/main_test.go index 76687bf6..c85f0c8a 100644 --- a/main_test.go +++ b/main_test.go @@ -29,9 +29,9 @@ func UserTable(u *NewUser) func(*gorm.DB) *gorm.DB { } // TableName which is cached -func (u *NewUser) TableName() string { - return fmt.Sprintf("newuser_%s", u.Table) -} +// func (u *NewUser) TableName() string { +// return fmt.Sprintf("newuser_%s", u.Table) +// } func TestGORM(t *testing.T) { tableName := []string{"a", "b", "c"} @@ -39,7 +39,8 @@ func TestGORM(t *testing.T) { nu := &NewUser{ Table: v, } - DB.Scopes(UserTable(nu)).Migrator().AutoMigrate(&nu) + // DB.Scopes(UserTable(nu)).Migrator().AutoMigrate(&nu) + // DB.Migrator().AutoMigrate(&nu) if err := DB.Scopes(UserTable(nu)).Migrator().AutoMigrate(&nu); err != nil { t.Errorf("Failed, got error: %v", err) }