/
sales_repository.go
48 lines (39 loc) · 1.46 KB
/
sales_repository.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package repositories
import (
"context"
"fmt"
"github.com/labstack/gommon/log"
"github.com/startreedata/pinot-client-go/pinot"
)
type SalesRepository interface {
GetSalesSummaryGroupByStoreAndDivision(ctx context.Context) (*pinot.BrokerResponse, error)
GetSalesSummaryByStoreAndDivision(ctx context.Context, storeCode uint32) (*pinot.BrokerResponse, error)
}
type salesRepository struct {
db *pinot.Connection
}
func NewSalesRepository(db *pinot.Connection) *salesRepository {
return &salesRepository{
db: db,
}
}
func (r *salesRepository) GetSalesSummaryGroupByStoreAndDivision(ctx context.Context) (*pinot.BrokerResponse, error) {
table := "sales"
query := "select storeCode, store, divisionCode, division, sum(totalPrice) as totalPrice from sales group by storeCode, divisionCode, store, division limit 1000000"
brokerResp, err := r.db.ExecuteSQL(table, query)
if err != nil {
log.Error(err)
return &pinot.BrokerResponse{}, err
}
return brokerResp, nil
}
func (r *salesRepository) GetSalesSummaryByStoreAndDivision(ctx context.Context, storeCode uint32) (*pinot.BrokerResponse, error) {
table := "sales"
query := fmt.Sprintf("select storeCode, store, divisionCode, division, sum(totalPrice) as totalPrice from sales where storeCode = %d group by storeCode, divisionCode, store, division limit 1000000", storeCode)
brokerResp, err := r.db.ExecuteSQL(table, query)
if err != nil {
log.Error(err)
return &pinot.BrokerResponse{}, err
}
return brokerResp, nil
}