67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package example
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"code.patial.tech/go/pgm"
|
|
"code.patial.tech/go/pgm/example/db"
|
|
"code.patial.tech/go/pgm/example/db/user"
|
|
)
|
|
|
|
func TestUpdateQuery(t *testing.T) {
|
|
got := db.User.Update().
|
|
Set(user.FirstName, "ankit").
|
|
Set(user.MiddleName, "singh").
|
|
Set(user.LastName, "patial").
|
|
Where(
|
|
user.Email.Eq("aa@aa.com"),
|
|
).
|
|
Where(
|
|
user.StatusID.NEq(1),
|
|
).
|
|
String()
|
|
|
|
expected := "UPDATE users SET first_name=$1, middle_name=$2, last_name=$3 WHERE users.email = $4 AND users.status_id != $5"
|
|
if got != expected {
|
|
t.Errorf("\nexpected: %q\ngot: %q", expected, got)
|
|
}
|
|
}
|
|
|
|
func TestUpdateSetMap(t *testing.T) {
|
|
got := db.User.Update().
|
|
SetMap(map[pgm.Field]any{
|
|
user.FirstName: "ankit",
|
|
user.MiddleName: "singh",
|
|
user.LastName: "patial",
|
|
}).
|
|
Where(
|
|
user.Email.Eq("aa@aa.com"),
|
|
).
|
|
Where(
|
|
user.StatusID.NEq(1),
|
|
).
|
|
String()
|
|
|
|
expected := "UPDATE users SET first_name=$1, middle_name=$2, last_name=$3 WHERE users.email = $4 AND users.status_id != $5"
|
|
if got != expected {
|
|
t.Errorf("\nexpected: %q\ngot: %q", expected, got)
|
|
}
|
|
}
|
|
|
|
// BenchmarkUpdateQuery-12 2004985 592.2 ns/op 1176 B/op 20 allocs/op
|
|
func BenchmarkUpdateQuery(b *testing.B) {
|
|
for b.Loop() {
|
|
_ = db.User.Update().
|
|
Set(user.FirstName, "ankit").
|
|
Set(user.MiddleName, "singh").
|
|
Set(user.LastName, "patial").
|
|
Where(
|
|
user.Email.Eq("aa@aa.com"),
|
|
).
|
|
Where(
|
|
user.StatusID.NEq(1),
|
|
).
|
|
String()
|
|
}
|
|
}
|