Compare commits
4 Commits
master
...
fix/update
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b2ff96b2e2 | ||
![]() |
685ece80d4 | ||
![]() |
294255c11b | ||
![]() |
e9c3b25552 |
@ -1,6 +1,8 @@
|
|||||||
package clause
|
package clause
|
||||||
|
|
||||||
import "sort"
|
import (
|
||||||
|
"sort"
|
||||||
|
)
|
||||||
|
|
||||||
type Set []Assignment
|
type Set []Assignment
|
||||||
|
|
||||||
@ -17,15 +19,15 @@ func (set Set) Build(builder Builder) {
|
|||||||
if len(set) > 0 {
|
if len(set) > 0 {
|
||||||
for idx, assignment := range set {
|
for idx, assignment := range set {
|
||||||
if idx > 0 {
|
if idx > 0 {
|
||||||
builder.WriteByte(',')
|
builder.WriteString(", ")
|
||||||
}
|
}
|
||||||
builder.WriteQuoted(assignment.Column)
|
builder.WriteQuoted(assignment.Column)
|
||||||
builder.WriteByte('=')
|
builder.WriteString(" = ")
|
||||||
builder.AddVar(builder, assignment.Value)
|
builder.AddVar(builder, assignment.Value)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
builder.WriteQuoted(Column{Name: PrimaryKey})
|
builder.WriteQuoted(Column{Name: PrimaryKey})
|
||||||
builder.WriteByte('=')
|
builder.WriteString(" = ")
|
||||||
builder.WriteQuoted(Column{Name: PrimaryKey})
|
builder.WriteQuoted(Column{Name: PrimaryKey})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,17 @@ func TestSet(t *testing.T) {
|
|||||||
"UPDATE `users` SET `name` = ?",
|
"UPDATE `users` SET `name` = ?",
|
||||||
[]interface{}{"jinzhu"},
|
[]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 {
|
for idx, result := range results {
|
||||||
|
@ -241,7 +241,9 @@ func TestEmbeddedRelations(t *testing.T) {
|
|||||||
Advanced bool
|
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 err := DB.AutoMigrate(&AdvancedUser{}); err != nil {
|
||||||
if DB.Dialector.Name() != "sqlite" {
|
if DB.Dialector.Name() != "sqlite" {
|
||||||
|
@ -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"})
|
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())
|
t.Errorf("Table with escape character, got %v", r.Statement.SQL.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user