Files
pgm/example/qry_insert_test.go
2025-07-26 18:34:56 +05:30

85 lines
2.0 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 TestInsertQuery(t *testing.T) {
got := db.User.Insert().
Set(user.Email, "aa@aa.com").
Set(user.Phone, 8889991234).
Set(user.FirstName, "fname").
Set(user.LastName, "lname").
Returning(user.ID).
String()
expected := "INSERT INTO users(email, phone, first_name, last_name) VALUES($1, $2, $3, $4) RETURNING id"
if got != expected {
t.Errorf("\nexpected: %q\ngot: %q", expected, got)
}
}
func TestInsertSetMap(t *testing.T) {
got := db.User.Insert().
SetMap(map[pgm.Field]any{
user.Email: "aa@aa.com",
user.Phone: 8889991234,
user.FirstName: "fname",
user.LastName: "lname",
}).
Returning(user.ID).
String()
expected := "INSERT INTO users(email, phone, first_name, last_name) VALUES($1, $2, $3, $4) RETURNING id"
if got != expected {
t.Errorf("\nexpected: %q\ngot: %q", expected, got)
}
}
func TestInsertQuery2(t *testing.T) {
got := db.User.Insert().
Set(user.Email, "aa@aa.com").
Set(user.Phone, 8889991234).
OnConflict(user.ID).
DoNothing().
String()
expected := "INSERT INTO users(email, phone) VALUES($1, $2) ON CONFLICT (id) DO NOTHING"
if got != expected {
t.Errorf("\nexpected: %q\ngot: %q", expected, got)
}
}
// BenchmarkInsertQuery-12 1952412 605.3 ns/op 1144 B/op 18 allocs/op
func BenchmarkInsertQuery(b *testing.B) {
for b.Loop() {
_ = db.User.Insert().
Set(user.Email, "aa@aa.com").
Set(user.Phone, 8889991234).
Set(user.FirstName, "fname").
Set(user.LastName, "lname").
Returning(user.ID).
String()
}
}
// BenchmarkInsertSetMap-12 1534039 777.1 ns/op 1480 B/op 20 allocs/op
func BenchmarkInsertSetMap(b *testing.B) {
for b.Loop() {
_ = db.User.Insert().
SetMap(map[pgm.Field]any{
user.Email: "aa@aa.com",
user.Phone: 8889991234,
user.FirstName: "fname",
user.LastName: "lname",
}).
Returning(user.ID).
String()
}
}