Skip to content

Commit 2cc1f8c

Browse files
committed
fix: #160 SelectBuilder.With appends table names to FROM
1 parent ebceb91 commit 2cc1f8c

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

cte_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ func ExampleCTEBuilder() {
4040
)
4141
fmt.Println(cteb)
4242

43-
sb := Select("valid_users.id", "valid_users.name", "orders.id").With(cteb)
44-
sb.Join("orders", "valid_users.id = orders.user_id")
43+
sb := Select("valid_users.id", "valid_users.name", "orders.id").
44+
From("users").With(cteb).
45+
Join("orders", "users.id = orders.user_id")
4546
sb.Where(
4647
sb.LessEqualThan("orders.price", 200),
4748
"valid_users.level < orders.min_level",
@@ -50,11 +51,13 @@ func ExampleCTEBuilder() {
5051
sql, args := sb.Build()
5152
fmt.Println(sql)
5253
fmt.Println(args)
54+
fmt.Println(sb.TableNames())
5355

5456
// Output:
5557
// WITH valid_users AS (SELECT id, name, level FROM users WHERE level >= ?)
56-
// WITH valid_users AS (SELECT id, name, level FROM users WHERE level >= ?) SELECT valid_users.id, valid_users.name, orders.id FROM valid_users JOIN orders ON valid_users.id = orders.user_id WHERE orders.price <= ? AND valid_users.level < orders.min_level ORDER BY orders.price DESC
58+
// WITH valid_users AS (SELECT id, name, level FROM users WHERE level >= ?) SELECT valid_users.id, valid_users.name, orders.id FROM users, valid_users JOIN orders ON users.id = orders.user_id WHERE orders.price <= ? AND valid_users.level < orders.min_level ORDER BY orders.price DESC
5759
// [10 200]
60+
// [users valid_users]
5861
}
5962

6063
func TestCTEBuilder(t *testing.T) {

select.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,16 @@ func Select(col ...string) *SelectBuilder {
9494
return DefaultFlavor.NewSelectBuilder().Select(col...)
9595
}
9696

97+
// TableNames returns all table names in a SELECT.
98+
func (sb *SelectBuilder) TableNames() []string {
99+
return sb.tables
100+
}
101+
97102
// With sets WITH clause (the Common Table Expression) before SELECT.
98103
func (sb *SelectBuilder) With(builder *CTEBuilder) *SelectBuilder {
99104
sb.marker = selectMarkerAfterWith
100105
sb.cteBuilder = sb.Var(builder)
101-
sb.tables = builder.TableNames()
106+
sb.tables = append(sb.tables, builder.TableNames()...)
102107
return sb
103108
}
104109

0 commit comments

Comments
 (0)