@@ -360,6 +360,30 @@ func (q *Query) ExcludeColumn(columns ...string) *Query {
360
360
return q
361
361
}
362
362
363
+ // AppendColumn appends column to the list of default columns if they weren't set,
364
+ // while Column method overrides defaults
365
+ func (q * Query ) AppendColumn (columns ... string ) * Query {
366
+ t := q .tableModel .Table ()
367
+ if q .columns == nil {
368
+ for _ , f := range t .Fields {
369
+ q .columns = append (q .columns , SafeQuery ("?.?" , t .Alias , f .Column ))
370
+ }
371
+ }
372
+ return q .Column (columns ... )
373
+ }
374
+
375
+ // AppendColumnExpr appends column expression to the list of default columns if they weren't set,
376
+ // while ColumnExpr method overrides defaults
377
+ func (q * Query ) AppendColumnExpr (expr string , params ... interface {}) * Query {
378
+ t := q .tableModel .Table ()
379
+ if q .columns == nil {
380
+ for _ , f := range t .Fields {
381
+ q .columns = append (q .columns , SafeQuery ("?.?" , t .Alias , f .Column ))
382
+ }
383
+ }
384
+ return q .ColumnExpr (expr , params ... )
385
+ }
386
+
363
387
func (q * Query ) excludeColumn (column string ) bool {
364
388
for i := 0 ; i < len (q .columns ); i ++ {
365
389
app , ok := q .columns [i ].(fieldAppender )
@@ -482,60 +506,60 @@ func (q *Query) WhereOr(condition string, params ...interface{}) *Query {
482
506
483
507
// WhereGroup encloses conditions added in the function in parentheses.
484
508
//
485
- // q.Where("TRUE").
486
- // WhereGroup(func(q *pg.Query) (*pg.Query, error) {
487
- // q = q.WhereOr("FALSE").WhereOr("TRUE").
488
- // return q, nil
489
- // })
509
+ // q.Where("TRUE").
510
+ // WhereGroup(func(q *pg.Query) (*pg.Query, error) {
511
+ // q = q.WhereOr("FALSE").WhereOr("TRUE").
512
+ // return q, nil
513
+ // })
490
514
//
491
515
// generates
492
516
//
493
- // WHERE TRUE AND (FALSE OR TRUE)
517
+ // WHERE TRUE AND (FALSE OR TRUE)
494
518
func (q * Query ) WhereGroup (fn func (* Query ) (* Query , error )) * Query {
495
519
return q .whereGroup (" AND " , fn )
496
520
}
497
521
498
522
// WhereGroup encloses conditions added in the function in parentheses.
499
523
//
500
- // q.Where("TRUE").
501
- // WhereNotGroup(func(q *pg.Query) (*pg.Query, error) {
502
- // q = q.WhereOr("FALSE").WhereOr("TRUE").
503
- // return q, nil
504
- // })
524
+ // q.Where("TRUE").
525
+ // WhereNotGroup(func(q *pg.Query) (*pg.Query, error) {
526
+ // q = q.WhereOr("FALSE").WhereOr("TRUE").
527
+ // return q, nil
528
+ // })
505
529
//
506
530
// generates
507
531
//
508
- // WHERE TRUE AND NOT (FALSE OR TRUE)
532
+ // WHERE TRUE AND NOT (FALSE OR TRUE)
509
533
func (q * Query ) WhereNotGroup (fn func (* Query ) (* Query , error )) * Query {
510
534
return q .whereGroup (" AND NOT " , fn )
511
535
}
512
536
513
537
// WhereOrGroup encloses conditions added in the function in parentheses.
514
538
//
515
- // q.Where("TRUE").
516
- // WhereOrGroup(func(q *pg.Query) (*pg.Query, error) {
517
- // q = q.Where("FALSE").Where("TRUE").
518
- // return q, nil
519
- // })
539
+ // q.Where("TRUE").
540
+ // WhereOrGroup(func(q *pg.Query) (*pg.Query, error) {
541
+ // q = q.Where("FALSE").Where("TRUE").
542
+ // return q, nil
543
+ // })
520
544
//
521
545
// generates
522
546
//
523
- // WHERE TRUE OR (FALSE AND TRUE)
547
+ // WHERE TRUE OR (FALSE AND TRUE)
524
548
func (q * Query ) WhereOrGroup (fn func (* Query ) (* Query , error )) * Query {
525
549
return q .whereGroup (" OR " , fn )
526
550
}
527
551
528
552
// WhereOrGroup encloses conditions added in the function in parentheses.
529
553
//
530
- // q.Where("TRUE").
531
- // WhereOrGroup(func(q *pg.Query) (*pg.Query, error) {
532
- // q = q.Where("FALSE").Where("TRUE").
533
- // return q, nil
534
- // })
554
+ // q.Where("TRUE").
555
+ // WhereOrGroup(func(q *pg.Query) (*pg.Query, error) {
556
+ // q = q.Where("FALSE").Where("TRUE").
557
+ // return q, nil
558
+ // })
535
559
//
536
560
// generates
537
561
//
538
- // WHERE TRUE OR NOT (FALSE AND TRUE)
562
+ // WHERE TRUE OR NOT (FALSE AND TRUE)
539
563
func (q * Query ) WhereOrNotGroup (fn func (* Query ) (* Query , error )) * Query {
540
564
return q .whereGroup (" OR NOT " , fn )
541
565
}
@@ -591,7 +615,7 @@ func (q *Query) addWhere(f queryWithSepAppender) {
591
615
// WherePK adds condition based on the model primary keys.
592
616
// Usually it is the same as:
593
617
//
594
- // Where("id = ?id")
618
+ // Where("id = ?id")
595
619
func (q * Query ) WherePK () * Query {
596
620
if ! q .hasTableModel () {
597
621
q .err (errModelNil )
@@ -801,7 +825,7 @@ func (q *Query) countSelectQuery(column string) *SelectQuery {
801
825
// First sorts rows by primary key and selects the first row.
802
826
// It is a shortcut for:
803
827
//
804
- // q.OrderExpr("id ASC").Limit(1)
828
+ // q.OrderExpr("id ASC").Limit(1)
805
829
func (q * Query ) First () error {
806
830
table := q .tableModel .Table ()
807
831
@@ -816,7 +840,7 @@ func (q *Query) First() error {
816
840
// Last sorts rows by primary key and selects the last row.
817
841
// It is a shortcut for:
818
842
//
819
- // q.OrderExpr("id DESC").Limit(1)
843
+ // q.OrderExpr("id DESC").Limit(1)
820
844
func (q * Query ) Last () error {
821
845
table := q .tableModel .Table ()
822
846
0 commit comments