Skip to content

Commit 78fc90f

Browse files
committed
feat: append column method
1 parent 30e7053 commit 78fc90f

File tree

1 file changed

+51
-27
lines changed

1 file changed

+51
-27
lines changed

orm/query.go

Lines changed: 51 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,30 @@ func (q *Query) ExcludeColumn(columns ...string) *Query {
360360
return q
361361
}
362362

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+
363387
func (q *Query) excludeColumn(column string) bool {
364388
for i := 0; i < len(q.columns); i++ {
365389
app, ok := q.columns[i].(fieldAppender)
@@ -482,60 +506,60 @@ func (q *Query) WhereOr(condition string, params ...interface{}) *Query {
482506

483507
// WhereGroup encloses conditions added in the function in parentheses.
484508
//
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+
// })
490514
//
491515
// generates
492516
//
493-
// WHERE TRUE AND (FALSE OR TRUE)
517+
// WHERE TRUE AND (FALSE OR TRUE)
494518
func (q *Query) WhereGroup(fn func(*Query) (*Query, error)) *Query {
495519
return q.whereGroup(" AND ", fn)
496520
}
497521

498522
// WhereGroup encloses conditions added in the function in parentheses.
499523
//
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+
// })
505529
//
506530
// generates
507531
//
508-
// WHERE TRUE AND NOT (FALSE OR TRUE)
532+
// WHERE TRUE AND NOT (FALSE OR TRUE)
509533
func (q *Query) WhereNotGroup(fn func(*Query) (*Query, error)) *Query {
510534
return q.whereGroup(" AND NOT ", fn)
511535
}
512536

513537
// WhereOrGroup encloses conditions added in the function in parentheses.
514538
//
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+
// })
520544
//
521545
// generates
522546
//
523-
// WHERE TRUE OR (FALSE AND TRUE)
547+
// WHERE TRUE OR (FALSE AND TRUE)
524548
func (q *Query) WhereOrGroup(fn func(*Query) (*Query, error)) *Query {
525549
return q.whereGroup(" OR ", fn)
526550
}
527551

528552
// WhereOrGroup encloses conditions added in the function in parentheses.
529553
//
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+
// })
535559
//
536560
// generates
537561
//
538-
// WHERE TRUE OR NOT (FALSE AND TRUE)
562+
// WHERE TRUE OR NOT (FALSE AND TRUE)
539563
func (q *Query) WhereOrNotGroup(fn func(*Query) (*Query, error)) *Query {
540564
return q.whereGroup(" OR NOT ", fn)
541565
}
@@ -591,7 +615,7 @@ func (q *Query) addWhere(f queryWithSepAppender) {
591615
// WherePK adds condition based on the model primary keys.
592616
// Usually it is the same as:
593617
//
594-
// Where("id = ?id")
618+
// Where("id = ?id")
595619
func (q *Query) WherePK() *Query {
596620
if !q.hasTableModel() {
597621
q.err(errModelNil)
@@ -801,7 +825,7 @@ func (q *Query) countSelectQuery(column string) *SelectQuery {
801825
// First sorts rows by primary key and selects the first row.
802826
// It is a shortcut for:
803827
//
804-
// q.OrderExpr("id ASC").Limit(1)
828+
// q.OrderExpr("id ASC").Limit(1)
805829
func (q *Query) First() error {
806830
table := q.tableModel.Table()
807831

@@ -816,7 +840,7 @@ func (q *Query) First() error {
816840
// Last sorts rows by primary key and selects the last row.
817841
// It is a shortcut for:
818842
//
819-
// q.OrderExpr("id DESC").Limit(1)
843+
// q.OrderExpr("id DESC").Limit(1)
820844
func (q *Query) Last() error {
821845
table := q.tableModel.Table()
822846

0 commit comments

Comments
 (0)