Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 11 additions & 24 deletions _example/group.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 41 additions & 7 deletions _example/postgresql/account_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ type updateQueryTestCase[T any] struct {
query updateQuery[T]
expected string
vs []any
setup func(t *testing.T, db sqlla.DB)
expectedResult []T
}

Expand All @@ -225,6 +226,9 @@ func (u updateQueryTestCase[T]) assert(t *testing.T, opts ...cmp.Option) {
t.Helper()

ctx := context.Background()
if u.setup != nil {
u.setup(t, db)
}
got, err := u.query.ExecContext(ctx, db)
if err != nil {
t.Fatalf("unexpected error: %v", err)
Expand Down Expand Up @@ -413,7 +417,7 @@ func testCases() []testCaseWithToQueryTestCase {
query: postgresql.NewAccountSQL().Insert().
ValueName("foo").
ValueEmbedding(sampleVector),
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4) RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4);`,
vs: []any{sampleDate, sampleVector, "foo", sampleDate},
expectedResult: postgresql.Account{
ID: 1,
Expand All @@ -432,7 +436,7 @@ func testCases() []testCaseWithToQueryTestCase {
ValueChildGroupIDIsNull().
ValueCreatedAt(sampleDate).
ValueUpdatedAt(sampleDate),
expected: `INSERT INTO "groups" ("child_group_id","created_at","leader_account_id","name","sub_leader_account_id","updated_at") VALUES ($1,$2,$3,$4,$5,$6) RETURNING "id";`,
expected: `INSERT INTO "groups" ("child_group_id","created_at","leader_account_id","name","sub_leader_account_id","updated_at") VALUES ($1,$2,$3,$4,$5,$6);`,
vs: []any{sql.Null[int64]{}, sampleDate, int64(42), "foo", int64(28), sampleDate},
expectedResult: postgresql.Group{
ID: 1,
Expand All @@ -450,7 +454,7 @@ func testCases() []testCaseWithToQueryTestCase {
ValueName("foo").
ValueEmbedding(sampleVector).
OnConflictDoNothing(),
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4) ON CONFLICT DO NOTHING RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4) ON CONFLICT DO NOTHING;`,
vs: []any{sampleDate, sampleVector, "foo", sampleDate},
expectedResult: postgresql.Account{
ID: 1,
Expand All @@ -468,7 +472,7 @@ func testCases() []testCaseWithToQueryTestCase {
OnConflictDoUpdate("id").
ValueOnUpdateName("powawa").
SameOnUpdateEmbedding(),
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4) ON CONFLICT (id) DO UPDATE SET "embedding" = "excluded"."embedding", "name" = $5 RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4) ON CONFLICT (id) DO UPDATE SET "embedding" = "excluded"."embedding", "name" = $5;`,
vs: []any{sampleDate, sampleVector, "foo", sampleDate, "powawa"},
expectedResult: postgresql.Account{
ID: 1,
Expand All @@ -490,7 +494,7 @@ func testCases() []testCaseWithToQueryTestCase {
}
return bi
}(),
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4),($5,$6,$7,$8),($9,$10,$11,$12) RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4),($5,$6,$7,$8),($9,$10,$11,$12);`,
vs: []any{
sampleDate,
sampleVector,
Expand Down Expand Up @@ -523,7 +527,7 @@ func testCases() []testCaseWithToQueryTestCase {
}
return bi.OnConflictDoNothing()
}(),
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4),($5,$6,$7,$8),($9,$10,$11,$12) ON CONFLICT DO NOTHING RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","name","updated_at") VALUES ($1,$2,$3,$4),($5,$6,$7,$8),($9,$10,$11,$12) ON CONFLICT DO NOTHING;`,
vs: []any{
sampleDate,
sampleVector,
Expand Down Expand Up @@ -559,7 +563,7 @@ func testCases() []testCaseWithToQueryTestCase {
ValueOnUpdateName("powawa").
SameOnUpdateEmbedding()
}(),
expected: `INSERT INTO "accounts" ("created_at","embedding","id","name","updated_at") VALUES ($1,$2,$3,$4,$5),($6,$7,$8,$9,$10),($11,$12,$13,$14,$15) ON CONFLICT (id) DO UPDATE SET "embedding" = "excluded"."embedding", "name" = $16 RETURNING "id";`,
expected: `INSERT INTO "accounts" ("created_at","embedding","id","name","updated_at") VALUES ($1,$2,$3,$4,$5),($6,$7,$8,$9,$10),($11,$12,$13,$14,$15) ON CONFLICT (id) DO UPDATE SET "embedding" = "excluded"."embedding", "name" = $16;`,
vs: []any{
sampleDate,
sampleVector,
Expand All @@ -586,22 +590,52 @@ func testCases() []testCaseWithToQueryTestCase {
},
updateQueryTestCase[postgresql.Account]{
name: "update",
setup: func(t *testing.T, db sqlla.DB) {
if _, err := postgresql.NewAccountSQL().Insert().
ValueID(42).
ValueName("foo").
ValueEmbedding(sampleVector).
ValueCreatedAt(sampleDate).
ValueUpdatedAt(sampleDate).
ExecContextWithoutSelect(t.Context(), db); err != nil {
t.Fatalf("unexpected error: %v", err)
}
},
query: postgresql.NewAccountSQL().Update().
SetName("bar").
SetEmbedding(sampleVector).
WhereID(42),
expected: `UPDATE "accounts" SET "embedding" = $1, "name" = $2, "updated_at" = $3 WHERE "id" = $4;`,
vs: []any{sampleVector, "bar", sampleDate, int64(42)},
expectedResult: []postgresql.Account{
{ID: 42, Name: "bar", Embedding: sampleVector, CreatedAt: sampleDate, UpdatedAt: sampleDate},
},
},
updateQueryTestCase[postgresql.Group]{
name: "update with set null",
setup: func(t *testing.T, db sqlla.DB) {
if _, err := postgresql.NewGroupSQL().Insert().
ValueID(111).
ValueName("foo").
ValueLeaderAccountID(42).
ValueSubLeaderAccountID(28).
ValueChildGroupID(43).
ValueCreatedAt(sampleDate).
ValueUpdatedAt(sampleDate).
ExecContextWithoutSelect(t.Context(), db); err != nil {
t.Fatalf("unexpected error: %v", err)
}
},
query: postgresql.NewGroupSQL().Update().
SetLeaderAccountID(42).
SetSubLeaderAccountID(28).
SetChildGroupIDToNull().
WhereID(111),
expected: `UPDATE "groups" SET "child_group_id" = $1, "leader_account_id" = $2, "sub_leader_account_id" = $3 WHERE "id" = $4;`,
vs: []any{sql.Null[int64]{}, int64(42), int64(28), int64(111)},
expectedResult: []postgresql.Group{
{ID: 111, Name: "foo", LeaderAccountID: 42, SubLeaderAccountID: sql.Null[postgresql.AccountID]{Valid: true, V: 28}, ChildGroupID: sql.Null[postgresql.GroupID]{}, CreatedAt: sampleDate, UpdatedAt: sampleDate},
},
},
deleteQueryTestCase{
name: "delete with where",
Expand Down
Loading