From fc9a4f9c6e2472d0d67899fc3572f30e313b3ee1 Mon Sep 17 00:00:00 2001 From: Ariel Mashraki Date: Wed, 26 Oct 2022 20:56:17 +0300 Subject: [PATCH] dialect/sql: add example for OrderExpr on postgres --- dialect/sql/builder_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dialect/sql/builder_test.go b/dialect/sql/builder_test.go index ba18fec09..2c6534634 100644 --- a/dialect/sql/builder_test.go +++ b/dialect/sql/builder_test.go @@ -1664,6 +1664,21 @@ func TestSelector_OrderByExpr(t *testing.T) { Query() require.Equal(t, "SELECT * FROM `users` WHERE `age` > ? ORDER BY `name`, CASE WHEN id=? THEN id WHEN id=? THEN name END DESC", query) require.Equal(t, []any{28, 1, 2}, args) + + query, args = Dialect(dialect.Postgres). + Select("*"). + From(Table("users")). + Where(GT("age", 28)). + OrderBy("name"). + OrderExpr(ExprFunc(func(b *Builder) { + b.WriteString("CASE") + b.WriteString(" WHEN ").Ident("id").WriteOp(OpEQ).Arg(1).WriteString(" THEN ").Ident("id") + b.WriteString(" WHEN ").Ident("id").WriteOp(OpEQ).Arg(2).WriteString(" THEN ").Ident("name") + b.WriteString(" END DESC") + })). + Query() + require.Equal(t, `SELECT * FROM "users" WHERE "age" > $1 ORDER BY "name", CASE WHEN "id" = $2 THEN "id" WHEN "id" = $3 THEN "name" END DESC`, query) + require.Equal(t, []any{28, 1, 2}, args) } func TestSelector_SelectExpr(t *testing.T) {