Compare commits

...

4 Commits

Author SHA1 Message Date
demoManito
b2ff96b2e2 fix 2023-10-20 20:54:41 +08:00
demoManito
685ece80d4 fix test 2023-10-20 20:48:53 +08:00
demoManito
294255c11b fix test 2023-10-20 20:44:12 +08:00
demoManito
e9c3b25552 fix: SQL UPDATE SET is missing spaces 2023-10-20 20:36:26 +08:00
7 changed files with 36 additions and 21 deletions

View File

@ -1,6 +1,8 @@
package clause
import "sort"
import (
"sort"
)
type Set []Assignment
@ -17,15 +19,15 @@ func (set Set) Build(builder Builder) {
if len(set) > 0 {
for idx, assignment := range set {
if idx > 0 {
builder.WriteByte(',')
builder.WriteString(", ")
}
builder.WriteQuoted(assignment.Column)
builder.WriteByte('=')
builder.WriteString(" = ")
builder.AddVar(builder, assignment.Value)
}
} else {
builder.WriteQuoted(Column{Name: PrimaryKey})
builder.WriteByte('=')
builder.WriteString(" = ")
builder.WriteQuoted(Column{Name: PrimaryKey})
}
}

View File

@ -32,6 +32,17 @@ func TestSet(t *testing.T) {
"UPDATE `users` SET `name` = ?",
[]interface{}{"jinzhu"},
},
{
[]clause.Interface{
clause.Update{},
clause.Set([]clause.Assignment{
{clause.Column{Name: "name"}, "jinzhu"},
{clause.Column{Name: "age"}, 18},
}),
},
"UPDATE `users` SET `name` = ?, `age` = ?",
[]interface{}{"jinzhu", 18},
},
}
for idx, result := range results {

View File

@ -241,7 +241,9 @@ func TestEmbeddedRelations(t *testing.T) {
Advanced bool
}
DB.Migrator().DropTable(&AdvancedUser{})
if err := DB.Migrator().DropTable(&AdvancedUser{}); err != nil {
t.Fatal(err)
}
if err := DB.AutoMigrate(&AdvancedUser{}); err != nil {
if DB.Dialector.Name() != "sqlite" {

View File

@ -62,7 +62,7 @@ func TestUpsert(t *testing.T) {
}
r := DB.Session(&gorm.Session{DryRun: true}).Clauses(clause.OnConflict{UpdateAll: true}).Create(&RestrictedLanguage{Code: "upsert_code", Name: "upsert_name", Lang: "upsert_lang"})
if !regexp.MustCompile(`INTO .restricted_languages. .*\(.code.,.name.,.lang.\) .* (SET|UPDATE) .name.=.*.name.\W*$`).MatchString(r.Statement.SQL.String()) {
if !regexp.MustCompile(`INTO .restricted_languages. .*\(.code.,.name.,.lang.\) .* (SET|UPDATE) .name.*=.*.name.\W*$`).MatchString(r.Statement.SQL.String()) {
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
}
}