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