Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. // GroupByUserAndType : grouping cashback by userId and type
  2. func (service *App) GroupByUserAndType(ctx context.Context, params ...QueryFilter) ([]*SumCashback, error) {
  3. queryable, ok := data.QueryableFromContext(ctx)
  4. if !ok {
  5. queryable = service.queryable
  6. }
  7. where, args := BuildFilter(params...)
  8. statement := fmt.Sprintf(`
  9. SELECT "userId", SUM(amount) AS "amount", "type"
  10. FROM "%s" %s GROUP BY "userId", "type";
  11. `, TableName, where)
  12. rows, errSelect := queryable.Query(statement, args...)
  13. if errSelect != nil {
  14. return nil, errSelect
  15. }
  16.  
  17. defer rows.Close()
  18.  
  19. var records []*SumCashback
  20. for rows.Next() {
  21. sumCashback := &SumCashback{}
  22. err := rows.Scan(&sumCashback.UserID, &sumCashback.Amount, &sumCashback.Type)
  23. if err != nil {
  24. return nil, err
  25. }
  26. records = append(records, sumCashback)
  27. }
  28.  
  29. return records, nil
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement