/
transaction.go
49 lines (43 loc) · 1.42 KB
/
transaction.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
49
package partner
import (
"github.com/adinandradrs/cezbek-engine/internal/apps"
"github.com/adinandradrs/cezbek-engine/internal/model"
"github.com/adinandradrs/cezbek-engine/internal/repository"
"go.uber.org/zap"
)
type Transaction struct {
Dao repository.TransactionPersister
Logger *zap.Logger
}
type TransactionProvider interface {
Search(inp *model.SearchRequest) (*model.PartnerTransactionSearchResponse, *model.BusinessError)
Detail(inp *model.FindByIdRequest) (*model.PartnerTransactionProjection, *model.BusinessError)
}
func NewTransaction(t Transaction) TransactionProvider {
return &t
}
func (t *Transaction) Search(inp *model.SearchRequest) (*model.PartnerTransactionSearchResponse, *model.BusinessError) {
model.Page(inp)
c, countEx := t.Dao.CountByPartner(inp)
v, searchEx := t.Dao.SearchByPartner(inp)
if countEx != nil || searchEx != nil {
return nil, &model.BusinessError{
ErrorCode: apps.ErrCodeNotFound,
ErrorMessage: apps.ErrMsgNotFound,
}
}
return &model.PartnerTransactionSearchResponse{
Transactions: v,
PaginationResponse: model.Pagination(*c, inp.Limit, inp.Start),
}, nil
}
func (t *Transaction) Detail(inp *model.FindByIdRequest) (*model.PartnerTransactionProjection, *model.BusinessError) {
v, ex := t.Dao.DetailByPartner(inp)
if ex != nil {
return nil, &model.BusinessError{
ErrorCode: apps.ErrCodeNotFound,
ErrorMessage: apps.ErrMsgNotFound,
}
}
return v, nil
}