Skip to content

Commit f62f11d

Browse files
committed
fix sqlbuilder
1 parent b93a377 commit f62f11d

1 file changed

Lines changed: 73 additions & 4 deletions

File tree

sqlbuilder.go

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package qsql
22

33
type SqlBuilder struct {
4-
table []string
5-
selectStr []string
6-
whereAndStr []string
4+
innerBuilder *SqlBuilder
5+
table []string
6+
7+
whereStr []string
78
whereParams []interface{}
89
whereOrStr []string
910
whereOrParams []interface{}
@@ -23,13 +24,81 @@ func NewSqlBuilder(table string) *SqlBuilder {
2324
}
2425
}
2526

27+
func (b *SqlBuilder) Copy() *SqlBuilder {
28+
n := &SqlBuilder{
29+
innerBuilder: b.innerBuilder,
30+
table: make([]string, len(b.table)),
31+
whereStr: make([]string, len(b.whereStr)),
32+
whereParams: make([]interface{}, len(b.whereParams)),
33+
whereOrStr: make([]string, len(b.whereOrStr)),
34+
whereOrParams: make([]interface{}, len(b.whereOrParams)),
35+
groupByStr: make([]string, len(b.groupByStr)),
36+
havingStr: make([]string, len(b.havingStr)),
37+
havingParams: make([]interface{}, len(b.havingParams)),
38+
havingOrStr: make([]string, len(b.havingOrStr)),
39+
havingOrParams: make([]interface{}, len(b.havingOrParams)),
40+
orderByStr: make([]string, len(b.orderByStr)),
41+
offset: b.offset,
42+
limit: b.limit,
43+
}
44+
copy(n.table, b.table)
45+
copy(n.whereStr, b.whereStr)
46+
copy(n.whereParams, b.whereParams)
47+
copy(n.whereOrStr, b.whereOrStr)
48+
copy(n.whereOrParams, b.whereOrParams)
49+
copy(n.groupByStr, b.groupByStr)
50+
copy(n.havingStr, b.havingStr)
51+
copy(n.havingParams, b.havingParams)
52+
copy(n.havingOrStr, b.havingOrStr)
53+
copy(n.havingOrParams, b.havingOrParams)
54+
55+
return n
56+
}
57+
2658
func (b *SqlBuilder) Joins(table string) *SqlBuilder {
2759
b.table = append(b.table, table)
2860
return b
2961
}
3062

3163
func (b *SqlBuilder) Where(cond string, args ...interface{}) *SqlBuilder {
32-
b.whereAndStr = append(b.whereAndStr, cond)
64+
b.whereStr = append(b.whereStr, cond)
3365
b.whereParams = append(b.whereParams, args...)
3466
return b
3567
}
68+
69+
func (b *SqlBuilder) Or(cond string, args ...interface{}) *SqlBuilder {
70+
b.whereOrStr = append(b.whereOrStr, cond)
71+
b.whereOrParams = append(b.whereOrParams, args...)
72+
return b
73+
}
74+
75+
func (b *SqlBuilder) GroupBy(cond ...string) *SqlBuilder {
76+
b.groupByStr = append(b.groupByStr, cond...)
77+
return b
78+
}
79+
func (b *SqlBuilder) Having(cond string, args ...interface{}) *SqlBuilder {
80+
b.havingStr = append(b.havingStr, cond)
81+
b.havingParams = append(b.havingParams, args...)
82+
return b
83+
}
84+
func (b *SqlBuilder) HavingOr(cond string, args ...interface{}) *SqlBuilder {
85+
b.havingOrStr = append(b.havingOrStr, cond)
86+
b.havingOrParams = append(b.havingOrParams, args...)
87+
return b
88+
}
89+
90+
func (b *SqlBuilder) OrderBy(cond string) *SqlBuilder {
91+
b.orderByStr = append(b.orderByStr, cond)
92+
return b
93+
}
94+
func (b *SqlBuilder) Offset(offset int) *SqlBuilder {
95+
b.offset = offset
96+
return b
97+
}
98+
func (b *SqlBuilder) Limit(limit int) *SqlBuilder {
99+
b.limit = limit
100+
return b
101+
}
102+
func (b *SqlBuilder) Select(column ...string) (string, []interface{}) {
103+
return "TODO", nil
104+
}

0 commit comments

Comments
 (0)