forked from ebhomengo/niki
RollbackKindBoxRequestStatus
This commit is contained in:
parent
a18da64cf9
commit
e4a3c5464a
|
@ -2,9 +2,8 @@ package mysqlkindbox
|
|||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||
"git.gocasts.ir/ebhomengo/niki/logger"
|
||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
)
|
||||
|
@ -49,7 +48,7 @@ func (d DB) AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) ([]
|
|||
case err := <-errCh:
|
||||
if err != nil {
|
||||
if err := tx.Rollback(); err != nil {
|
||||
log.Printf("Rollback error: %v", err)
|
||||
logger.L().Error("Rollback error: ", err)
|
||||
}
|
||||
|
||||
return nil, err
|
||||
|
@ -58,7 +57,7 @@ func (d DB) AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) ([]
|
|||
result = append(result, res)
|
||||
case <-ctx.Done():
|
||||
if err := tx.Rollback(); err != nil {
|
||||
log.Printf("Rollback error: %v", err)
|
||||
logger.L().Error("Rollback error: ", err)
|
||||
}
|
||||
|
||||
return nil, richerror.New(op).WithErr(ctx.Err()).
|
||||
|
@ -67,7 +66,7 @@ func (d DB) AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) ([]
|
|||
}
|
||||
|
||||
if err := tx.Commit(); err != nil {
|
||||
log.Printf("Commit error: %v", err)
|
||||
logger.L().Error("Commit error: ", err)
|
||||
|
||||
return nil, richerror.New(op).WithErr(err).
|
||||
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
||||
|
|
|
@ -122,3 +122,20 @@ func (d DB) RejectKindBoxReq(ctx context.Context, kindBoxReqID uint, description
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d DB) RollbackKindBoxRequestStatus(ctx context.Context, id uint) error {
|
||||
op := richerror.Op("mysqlkindboxreq.RollbackKindBoxRequestStatus")
|
||||
statement, err := d.conn.Conn().
|
||||
Prepare(`update kind_box_reqs set status = ? where id = ?`)
|
||||
defer statement.Close()
|
||||
if err != nil {
|
||||
return richerror.New(op).WithErr(err).
|
||||
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
||||
}
|
||||
_, eErr := statement.ExecContext(ctx, entity.KindBoxReqPendingStatus.String(), id)
|
||||
if eErr != nil {
|
||||
return richerror.New(op).WithErr(eErr).
|
||||
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -2,12 +2,17 @@ package adminkindboxreqservice
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.gocasts.ir/ebhomengo/niki/logger"
|
||||
adminkindboxparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
||||
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req"
|
||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||
)
|
||||
|
||||
//@see
|
||||
// When confirming a request, should the senderID field, which represents the person sending the kind-box to the beneficiary,
|
||||
// be filled at the same time? Or is it acceptable to confirm the request first and fill in the senderID field later?
|
||||
//
|
||||
|
||||
func (s Service) Accept(ctx context.Context, req param.KindBoxReqAcceptRequest) (param.KindBoxReqAcceptResponse, error) {
|
||||
const op = "adminkindboxreqservice.Accept"
|
||||
err := s.repo.AcceptKindBoxReq(ctx, req.ID, req.CountAccepted)
|
||||
|
@ -15,8 +20,6 @@ func (s Service) Accept(ctx context.Context, req param.KindBoxReqAcceptRequest)
|
|||
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(err)
|
||||
}
|
||||
|
||||
// fire new event to create a kind-box.
|
||||
|
||||
kindBoxReq, gErr := s.repo.GetByID(ctx, req.ID)
|
||||
if gErr != nil {
|
||||
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(gErr)
|
||||
|
@ -29,6 +32,12 @@ func (s Service) Accept(ctx context.Context, req param.KindBoxReqAcceptRequest)
|
|||
Count: kindBoxReq.CountAccepted,
|
||||
})
|
||||
if kErr != nil {
|
||||
// rollback kind box request status
|
||||
rErr := s.repo.RollbackKindBoxRequestStatus(ctx, req.ID)
|
||||
if rErr != nil {
|
||||
// log error
|
||||
logger.L().Error(rErr.Error())
|
||||
}
|
||||
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(kErr)
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ type Repository interface {
|
|||
AcceptKindBoxReq(ctx context.Context, kindBoxReqID uint, countAccepted uint) error
|
||||
GetByID(ctx context.Context, id uint) (entity.KindBoxReq, error)
|
||||
RejectKindBoxReq(ctx context.Context, kindBoxReqID uint, description string) error
|
||||
RollbackKindBoxRequestStatus(ctx context.Context, id uint) error
|
||||
}
|
||||
|
||||
type KindBoxClient interface {
|
||||
|
|
Loading…
Reference in New Issue