Skip to content

Commit e44783f

Browse files
authored
fix(query_builder): trimming a prefix if it is on the where statement (#4)
trimming a prefix if it is on the where statement
1 parent c99d8fc commit e44783f

File tree

1 file changed

+24
-14
lines changed

1 file changed

+24
-14
lines changed

query_builder.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,11 @@ func (p *Paginator) First() (string, error) {
123123
}
124124

125125
sqlBuilder.WriteString("WHERE (1 = 1) \n")
126-
sqlBuilder.WriteString("AND (")
127-
sqlBuilder.WriteString(wSQL)
128-
sqlBuilder.WriteString(") \n")
126+
if wSQL != "" {
127+
sqlBuilder.WriteString("AND (\n")
128+
sqlBuilder.WriteString(trimWherePrefix(wSQL))
129+
sqlBuilder.WriteString("\n)\n")
130+
}
129131

130132
if gSQL != "" {
131133
sqlBuilder.WriteString(gSQL)
@@ -194,9 +196,9 @@ func (p *Paginator) Pivot() (string, error) {
194196
sqlBuilder.WriteString(" >= ?) \n")
195197

196198
if wSQL != "" {
197-
sqlBuilder.WriteString("AND ( \n")
198-
sqlBuilder.WriteString(wSQL)
199-
sqlBuilder.WriteString(") \n")
199+
sqlBuilder.WriteString("AND (\n")
200+
sqlBuilder.WriteString(trimWherePrefix(wSQL))
201+
sqlBuilder.WriteString("\n)\n")
200202
}
201203

202204
if gSQL != "" {
@@ -303,9 +305,9 @@ func (p *Paginator) Retrieve(pivot string, dest interface{}) error {
303305
sqlBuilder.WriteString(" > ?)) \n")
304306

305307
if wSQL != "" {
306-
sqlBuilder.WriteString("AND ( \n")
307-
sqlBuilder.WriteString(wSQL)
308-
sqlBuilder.WriteString(") \n")
308+
sqlBuilder.WriteString("AND (\n")
309+
sqlBuilder.WriteString(trimWherePrefix(wSQL))
310+
sqlBuilder.WriteString("\n)\n")
309311
}
310312

311313
if gSQL != "" {
@@ -370,19 +372,19 @@ func (p *Paginator) Counts(dest *int64) error {
370372
sqlBuilder.WriteString("WHERE (1=1) \n")
371373

372374
if wSQL != "" {
373-
sqlBuilder.WriteString("AND ( \n")
374-
sqlBuilder.WriteString(wSQL)
375-
sqlBuilder.WriteString(") \n")
375+
sqlBuilder.WriteString("AND (\n")
376+
sqlBuilder.WriteString(trimWherePrefix(wSQL))
377+
sqlBuilder.WriteString("\n)\n")
376378
}
377379

378-
args := jArgs
379380
if gSQL != "" {
380381
sqlBuilder.WriteString(gSQL)
381382
sqlBuilder.WriteString(" \n")
382-
args = append(args, wArgs...)
383383
}
384384

385385
sql := sqlBuilder.String()
386+
387+
args := append(jArgs, wArgs...)
386388
var err error
387389
sql, args, err = sqlx.In(sql, args...)
388390
if err != nil {
@@ -396,3 +398,11 @@ func (p *Paginator) Counts(dest *int64) error {
396398

397399
return nil
398400
}
401+
402+
func trimWherePrefix(w string) string {
403+
if strings.HasPrefix(w, string(WhereTypeAnd)) || strings.HasPrefix(w, string(WhereTypeOr)) {
404+
w = strings.TrimPrefix(w, string(WhereTypeAnd))
405+
w = strings.TrimPrefix(w, string(WhereTypeOr))
406+
}
407+
return strings.TrimSpace(w)
408+
}

0 commit comments

Comments
 (0)