Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // GroupByUserAndType : grouping cashback by userId and type
- func (service *App) GroupByUserAndType(ctx context.Context, params ...QueryFilter) ([]*SumCashback, error) {
- queryable, ok := data.QueryableFromContext(ctx)
- if !ok {
- queryable = service.queryable
- }
- where, args := BuildFilter(params...)
- statement := fmt.Sprintf(`
- SELECT "userId", SUM(amount) AS "amount", "type"
- FROM "%s" %s GROUP BY "userId", "type";
- `, TableName, where)
- rows, errSelect := queryable.Query(statement, args...)
- if errSelect != nil {
- return nil, errSelect
- }
- defer rows.Close()
- var records []*SumCashback
- for rows.Next() {
- sumCashback := &SumCashback{}
- err := rows.Scan(&sumCashback.UserID, &sumCashback.Amount, &sumCashback.Type)
- if err != nil {
- return nil, err
- }
- records = append(records, sumCashback)
- }
- return records, nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement