mirror of
https://github.com/ent/ent.git
synced 2026-04-30 06:30:55 +03:00
dialect/sql/sqlgraph: allow update single node without select
This commit is contained in:
committed by
Ariel Mashraki
parent
82277ac804
commit
712b6a5f08
@@ -671,6 +671,11 @@ func (u *updater) node(ctx context.Context, tx dialect.ExecQuerier) error {
|
||||
if err := u.setExternalEdges(ctx, []driver.Value{id}, addEdges, clearEdges); err != nil {
|
||||
return err
|
||||
}
|
||||
// Ignore querying the database when there's nothing
|
||||
// to scan into it.
|
||||
if u.ScanValues == nil {
|
||||
return nil
|
||||
}
|
||||
selector := u.builder.Select(u.Node.Columns...).
|
||||
From(u.builder.Table(u.Node.Table).Schema(u.Node.Schema)).
|
||||
Where(sql.EQ(u.Node.ID.Column, u.Node.ID.Value))
|
||||
|
||||
@@ -1545,6 +1545,30 @@ func TestUpdateNode(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecUpdateNode(t *testing.T) {
|
||||
db, mock, err := sqlmock.New()
|
||||
require.NoError(t, err)
|
||||
mock.ExpectBegin()
|
||||
mock.ExpectExec(escape("UPDATE `users` SET `age` = ?, `name` = ? WHERE `id` = ?")).
|
||||
WithArgs(30, "Ariel", 1).
|
||||
WillReturnResult(sqlmock.NewResult(1, 1))
|
||||
mock.ExpectCommit()
|
||||
err = UpdateNode(context.Background(), sql.OpenDB("", db), &UpdateSpec{
|
||||
Node: &NodeSpec{
|
||||
Table: "users",
|
||||
Columns: []string{"id", "name", "age"},
|
||||
ID: &FieldSpec{Column: "id", Type: field.TypeInt, Value: 1},
|
||||
},
|
||||
Fields: FieldMut{
|
||||
Set: []*FieldSpec{
|
||||
{Column: "age", Type: field.TypeInt, Value: 30},
|
||||
{Column: "name", Type: field.TypeString, Value: "Ariel"},
|
||||
},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestUpdateNodes(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
Reference in New Issue
Block a user