mirror of
https://github.com/ent/ent.git
synced 2026-05-22 09:31:45 +03:00
dialect/sql: add Add method to UpdateSet
This commit is contained in:
committed by
Ariel Mashraki
parent
3c650e507e
commit
912415e1e1
@@ -934,6 +934,12 @@ func (u *UpdateSet) Set(column string, v interface{}) *UpdateSet {
|
||||
return u
|
||||
}
|
||||
|
||||
// Add adds a numeric value to the given column.
|
||||
func (u *UpdateSet) Add(column string, v interface{}) *UpdateSet {
|
||||
u.update.Add(column, v)
|
||||
return u
|
||||
}
|
||||
|
||||
// SetNull sets a column as null value.
|
||||
func (u *UpdateSet) SetNull(column string) *UpdateSet {
|
||||
u.update.SetNull(column)
|
||||
|
||||
@@ -1720,12 +1720,13 @@ func TestInsert_OnConflict(t *testing.T) {
|
||||
// Update all new values excepts id field.
|
||||
ResolveWith(func(u *UpdateSet) {
|
||||
u.SetIgnore("id")
|
||||
u.Add("version", 1)
|
||||
}),
|
||||
UpdateWhere(NEQ("updated_at", 0)),
|
||||
).
|
||||
Query()
|
||||
require.Equal(t, `INSERT INTO "users" ("id", "email") VALUES ($1, $2) ON CONFLICT ("email") WHERE "name" = $3 DO UPDATE SET "id" = "users"."id", "email" = "excluded"."email" WHERE "updated_at" <> $4`, query)
|
||||
require.Equal(t, []interface{}{"1", "user@example.com", "Ariel", 0}, args)
|
||||
require.Equal(t, `INSERT INTO "users" ("id", "email") VALUES ($1, $2) ON CONFLICT ("email") WHERE "name" = $3 DO UPDATE SET "id" = "users"."id", "email" = "excluded"."email", "version" = COALESCE("version", 0) + $4 WHERE "updated_at" <> $5`, query)
|
||||
require.Equal(t, []interface{}{"1", "user@example.com", "Ariel", 1, 0}, args)
|
||||
|
||||
query, args = Dialect(dialect.Postgres).
|
||||
Insert("users").
|
||||
@@ -1809,11 +1810,12 @@ func TestInsert_OnConflict(t *testing.T) {
|
||||
ResolveWith(func(s *UpdateSet) {
|
||||
s.SetExcluded("name")
|
||||
s.SetNull("created_at")
|
||||
s.Add("version", 1)
|
||||
}),
|
||||
).
|
||||
Query()
|
||||
require.Equal(t, "INSERT INTO `users` (`id`, `name`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `created_at` = NULL, `name` = VALUES(`name`)", query)
|
||||
require.Equal(t, []interface{}{"1", "Mashraki"}, args)
|
||||
require.Equal(t, "INSERT INTO `users` (`id`, `name`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `created_at` = NULL, `name` = VALUES(`name`), `version` = COALESCE(`version`, 0) + ?", query)
|
||||
require.Equal(t, []interface{}{"1", "Mashraki", 1}, args)
|
||||
|
||||
query, args = Dialect(dialect.MySQL).
|
||||
Insert("users").
|
||||
|
||||
Reference in New Issue
Block a user