dialect/sql: add example for OrderExpr on postgres

This commit is contained in:
Ariel Mashraki
2022-10-26 20:56:17 +03:00
committed by Ariel Mashraki
parent 2d22f7e706
commit fc9a4f9c6e

View File

@@ -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) {