| 77 | } |
| 78 | |
| 79 | func TestQuery_ComplexConditions(t *testing.T) { |
| 80 | q := Q().Space("SELECT * FROM revision"). |
| 81 | Where("TRUE"). |
| 82 | And("instance = ?", "prod"). |
| 83 | And("db_name = ?", "main"). |
| 84 | And("payload->>'type' = ?", "MIGRATE"). |
| 85 | And("deleted_at IS NULL"). |
| 86 | Space("ORDER BY version DESC"). |
| 87 | Space("LIMIT ?", 10). |
| 88 | Space("OFFSET ?", 20) |
| 89 | sql, args, err := q.ToSQL() |
| 90 | require.NoError(t, err) |
| 91 | require.Equal(t, "SELECT * FROM revision WHERE TRUE AND instance = $1 AND db_name = $2 AND payload->>'type' = $3 AND deleted_at IS NULL ORDER BY version DESC LIMIT $4 OFFSET $5", sql) |
| 92 | require.Equal(t, []any{"prod", "main", "MIGRATE", 10, 20}, args) |
| 93 | } |
| 94 | |
| 95 | func TestQuery_ArrayParameter(t *testing.T) { |
| 96 | versions := []string{"v1", "v2", "v3"} |