forked from ebhomengo/niki
RollbackKindBoxRequestStatus
This commit is contained in:
parent
a18da64cf9
commit
e4a3c5464a
|
@ -2,9 +2,8 @@ package mysqlkindbox
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"log"
|
|
||||||
|
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/logger"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
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:
|
case err := <-errCh:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err := tx.Rollback(); err != nil {
|
if err := tx.Rollback(); err != nil {
|
||||||
log.Printf("Rollback error: %v", err)
|
logger.L().Error("Rollback error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -58,7 +57,7 @@ func (d DB) AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) ([]
|
||||||
result = append(result, res)
|
result = append(result, res)
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
if err := tx.Rollback(); err != nil {
|
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()).
|
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 {
|
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).
|
return nil, richerror.New(op).WithErr(err).
|
||||||
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
||||||
|
|
|
@ -122,3 +122,20 @@ func (d DB) RejectKindBoxReq(ctx context.Context, kindBoxReqID uint, description
|
||||||
|
|
||||||
return nil
|
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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/logger"
|
||||||
adminkindboxparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
adminkindboxparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req"
|
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req"
|
||||||
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
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) {
|
func (s Service) Accept(ctx context.Context, req param.KindBoxReqAcceptRequest) (param.KindBoxReqAcceptResponse, error) {
|
||||||
const op = "adminkindboxreqservice.Accept"
|
const op = "adminkindboxreqservice.Accept"
|
||||||
err := s.repo.AcceptKindBoxReq(ctx, req.ID, req.CountAccepted)
|
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)
|
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fire new event to create a kind-box.
|
|
||||||
|
|
||||||
kindBoxReq, gErr := s.repo.GetByID(ctx, req.ID)
|
kindBoxReq, gErr := s.repo.GetByID(ctx, req.ID)
|
||||||
if gErr != nil {
|
if gErr != nil {
|
||||||
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(gErr)
|
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,
|
Count: kindBoxReq.CountAccepted,
|
||||||
})
|
})
|
||||||
if kErr != nil {
|
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)
|
return param.KindBoxReqAcceptResponse{}, richerror.New(op).WithErr(kErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ type Repository interface {
|
||||||
AcceptKindBoxReq(ctx context.Context, kindBoxReqID uint, countAccepted uint) error
|
AcceptKindBoxReq(ctx context.Context, kindBoxReqID uint, countAccepted uint) error
|
||||||
GetByID(ctx context.Context, id uint) (entity.KindBoxReq, error)
|
GetByID(ctx context.Context, id uint) (entity.KindBoxReq, error)
|
||||||
RejectKindBoxReq(ctx context.Context, kindBoxReqID uint, description string) error
|
RejectKindBoxReq(ctx context.Context, kindBoxReqID uint, description string) error
|
||||||
|
RollbackKindBoxRequestStatus(ctx context.Context, id uint) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type KindBoxClient interface {
|
type KindBoxClient interface {
|
||||||
|
|
Loading…
Reference in New Issue