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