Skip to content

Commit

Permalink
Merge branch 'master' into feat/protoc-env
Browse files Browse the repository at this point in the history
  • Loading branch information
sfwn authored Sep 11, 2023
2 parents 5c0ec9c + 8cc2eb9 commit 5e166a2
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 99 deletions.
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ require (
gopkg.in/yaml.v2 v2.3.0
gopkg.in/yaml.v3 v3.0.1
gorm.io/driver/mysql v1.3.2
gorm.io/gorm v1.23.2
gorm.io/driver/sqlite v1.5.3
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55
k8s.io/apimachinery v0.18.3
k8s.io/client-go v0.18.3
)
Expand Down Expand Up @@ -101,7 +102,7 @@ require (
github.com/imdario/mergo v0.3.5 // indirect
github.com/jackc/pgx v3.6.2+incompatible // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.4 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/jonboulle/clockwork v0.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/klauspost/compress v1.15.15 // indirect
Expand All @@ -110,7 +111,7 @@ require (
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.2 // indirect
github.com/mattn/go-isatty v0.0.9 // indirect
github.com/mattn/go-sqlite3 v1.14.9 // indirect
github.com/mattn/go-sqlite3 v1.14.17 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
Expand Down
13 changes: 8 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,9 @@ github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBef
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
Expand Down Expand Up @@ -353,8 +354,8 @@ github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA=
github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM=
github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
Expand Down Expand Up @@ -784,9 +785,11 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.3.2 h1:QJryWiqQ91EvZ0jZL48NOpdlPdMjdip1hQ8bTgo4H7I=
gorm.io/driver/mysql v1.3.2/go.mod h1:ChK6AHbHgDCFZyJp0F+BmVGb06PSIoh9uVYKAlRbb2U=
gorm.io/driver/sqlite v1.5.3 h1:7/0dUgX28KAcopdfbRWWl68Rflh6osa4rDh+m51KL2g=
gorm.io/driver/sqlite v1.5.3/go.mod h1:qxAuCol+2r6PannQDpOP1FP6ag3mKi4esLnB/jHed+4=
gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.23.2 h1:xmq9QRMWL8HTJyhAUBXy8FqIIQCYESeKfJL4DoGKiWQ=
gorm.io/gorm v1.23.2/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55 h1:sC1Xj4TYrLqg1n3AN10w871An7wJM0gzgcm8jkIkECQ=
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
Expand Down
2 changes: 1 addition & 1 deletion providers/mysql/v2/plugins/fields/soft_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (sd SoftDeleteQueryClause) ModifyStatement(stmt *gorm.Statement) {

stmt.AddClause(clause.Where{Exprs: []clause.Expression{
clause.Or(
clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: zero},
clause.Lte{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: zero},
clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: nil},
),
}})
Expand Down
180 changes: 90 additions & 90 deletions providers/mysql/v2/plugins/fields/soft_delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,93 +14,93 @@

package fields_test

//import (
// "errors"
// "os"
// "path/filepath"
// "regexp"
// "testing"
//
// "gorm.io/driver/sqlite"
// "gorm.io/gorm"
//
// "github.com/erda-project/erda-infra/providers/mysql/v2/plugins/fields"
//)
//
//type User struct {
// ID uint
// Name string
// Age uint
// DeletedAt fields.DeletedAt
//}
//
//func TestSoftDelete(t *testing.T) {
// dsn := filepath.Join(os.TempDir(), "gorm.db")
// DB, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{})
// if err != nil {
// t.Errorf("failed to connect database")
// }
// DB = DB.Debug()
//
// user := User{Name: "jinzhu", Age: 20}
// DB.Migrator().DropTable(&User{})
// DB.AutoMigrate(&User{})
// DB.Save(&user)
//
// var count int64
// var age uint
//
// if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
// t.Errorf("Count soft deleted record, expects: %v, got: %v", 1, count)
// }
//
// if DB.Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error != nil || age != user.Age {
// t.Errorf("Age soft deleted record, expects: %v, got: %v", user.Age, age)
// }
//
// if err := DB.Delete(&user).Error; err != nil {
// t.Fatalf("No error should happen when soft delete user, but got %v", err)
// }
//
// if user.DeletedAt.Time.IsZero() {
// t.Errorf("user's deleted at should not be zero, DeletedAt: %v", user.DeletedAt)
// }
//
// sql := DB.Session(&gorm.Session{DryRun: true}).Delete(&user).Statement.SQL.String()
// if !regexp.MustCompile(`UPDATE .users. SET .deleted_at.=.* WHERE .users.\..id. = .* AND \(.users.\..deleted_at. = \? OR .users.\..deleted_at. IS NULL\)`).MatchString(sql) {
// t.Fatalf("invalid sql generated, got %v", sql)
// }
//
// if DB.First(&User{}, "name = ?", user.Name).Error == nil {
// t.Errorf("Can't find a soft deleted record")
// }
//
// count = 0
// if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 0 {
// t.Errorf("Count soft deleted record, expects: %v, got: %v", 0, count)
// }
//
// age = 0
// if err := DB.Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error; err != nil || age != 0 {
// t.Fatalf("Age soft deleted record, expects: %v, got: %v, err %v", 0, age, err)
// }
//
// if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; err != nil {
// t.Errorf("Should find soft deleted record with Unscoped, but got err %s", err)
// }
//
// count = 0
// if DB.Unscoped().Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
// t.Errorf("Count soft deleted record, expects: %v, count: %v", 1, count)
// }
//
// age = 0
// if DB.Unscoped().Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error != nil || age != user.Age {
// t.Errorf("Age soft deleted record, expects: %v, got: %v", 0, age)
// }
//
// DB.Unscoped().Delete(&user)
// if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; !errors.Is(err, gorm.ErrRecordNotFound) {
// t.Errorf("Can't find permanently deleted record")
// }
//}
import (
"errors"
"os"
"path/filepath"
"regexp"
"testing"

"gorm.io/driver/sqlite"
"gorm.io/gorm"

"github.com/erda-project/erda-infra/providers/mysql/v2/plugins/fields"
)

type User struct {
ID uint
Name string
Age uint
DeletedAt fields.DeletedAt
}

func TestSoftDelete(t *testing.T) {
dsn := filepath.Join(os.TempDir(), "gorm.db")
DB, err := gorm.Open(sqlite.Open(dsn), &gorm.Config{})
if err != nil {
t.Errorf("failed to connect database")
}
DB = DB.Debug()

user := User{Name: "jinzhu", Age: 20}
DB.Migrator().DropTable(&User{})
DB.AutoMigrate(&User{})
DB.Save(&user)

var count int64
var age uint

if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
t.Errorf("Count soft deleted record, expects: %v, got: %v", 1, count)
}

if DB.Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error != nil || age != user.Age {
t.Errorf("Age soft deleted record, expects: %v, got: %v", user.Age, age)
}

if err := DB.Delete(&user).Error; err != nil {
t.Fatalf("No error should happen when soft delete user, but got %v", err)
}

if user.DeletedAt.Time.IsZero() {
t.Errorf("user's deleted at should not be zero, DeletedAt: %v", user.DeletedAt)
}

sql := DB.Session(&gorm.Session{DryRun: true}).Delete(&user).Statement.SQL.String()
if !regexp.MustCompile(`UPDATE .users. SET .deleted_at.=.* WHERE .users.\..id. = .* AND \(.users.\..deleted_at. <= \? OR .users.\..deleted_at. IS NULL\)`).MatchString(sql) {
t.Fatalf("invalid sql generated, got %v", sql)
}

if DB.First(&User{}, "name = ?", user.Name).Error == nil {
t.Errorf("Can't find a soft deleted record")
}

count = 0
if DB.Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 0 {
t.Errorf("Count soft deleted record, expects: %v, got: %v", 0, count)
}

age = 0
if err := DB.Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error; err != nil || age != 0 {
t.Fatalf("Age soft deleted record, expects: %v, got: %v, err %v", 0, age, err)
}

if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; err != nil {
t.Errorf("Should find soft deleted record with Unscoped, but got err %s", err)
}

count = 0
if DB.Unscoped().Model(&User{}).Where("name = ?", user.Name).Count(&count).Error != nil || count != 1 {
t.Errorf("Count soft deleted record, expects: %v, count: %v", 1, count)
}

age = 0
if DB.Unscoped().Model(&User{}).Select("age").Where("name = ?", user.Name).Scan(&age).Error != nil || age != user.Age {
t.Errorf("Age soft deleted record, expects: %v, got: %v", 0, age)
}

DB.Unscoped().Delete(&user)
if err := DB.Unscoped().First(&User{}, "name = ?", user.Name).Error; !errors.Is(err, gorm.ErrRecordNotFound) {
t.Errorf("Can't find permanently deleted record")
}
}

0 comments on commit 5e166a2

Please sign in to comment.