init project
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package partner
|
||||
|
||||
import (
|
||||
"context"
|
||||
"furtuna-be/internal/common/logger"
|
||||
"furtuna-be/internal/common/mycontext"
|
||||
"furtuna-be/internal/entity"
|
||||
"furtuna-be/internal/repository"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type PartnerService struct {
|
||||
repo repository.PartnerRepository
|
||||
}
|
||||
|
||||
func NewPartnerService(repo repository.PartnerRepository) *PartnerService {
|
||||
return &PartnerService{
|
||||
repo: repo,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *PartnerService) Create(ctx mycontext.Context, PartnerReq *entity.Partner) (*entity.Partner, error) {
|
||||
PartnerDB := PartnerReq.ToPartnerDB()
|
||||
PartnerDB.CreatedBy = ctx.RequestedBy()
|
||||
|
||||
PartnerDB, err := s.repo.Create(ctx, PartnerDB)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when create Partner", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return PartnerDB.ToPartner(), nil
|
||||
}
|
||||
|
||||
func (s *PartnerService) Update(ctx mycontext.Context, id int64, PartnerReq *entity.Partner) (*entity.Partner, error) {
|
||||
existingPartner, err := s.repo.GetByID(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
existingPartner.ToUpdatedPartner(ctx.RequestedBy(), *PartnerReq)
|
||||
|
||||
updatedPartnerDB, err := s.repo.Update(ctx, existingPartner.ToPartnerDB())
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when update Partner", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return updatedPartnerDB.ToPartner(), nil
|
||||
}
|
||||
|
||||
func (s *PartnerService) GetByID(ctx context.Context, id int64) (*entity.Partner, error) {
|
||||
PartnerDB, err := s.repo.GetByID(ctx, id)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when get Partner by id", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return PartnerDB.ToPartner(), nil
|
||||
}
|
||||
|
||||
func (s *PartnerService) GetAll(ctx context.Context, search entity.PartnerSearch) ([]*entity.Partner, int, error) {
|
||||
Partneres, total, err := s.repo.GetAll(ctx, search)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when get all Partneres", zap.Error(err))
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return Partneres.ToPartnerList(), total, nil
|
||||
}
|
||||
|
||||
func (s *PartnerService) Delete(ctx mycontext.Context, id int64) error {
|
||||
PartnerDB, err := s.repo.GetByID(ctx, id)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when get Partner by id", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
PartnerDB.SetDeleted(ctx.RequestedBy())
|
||||
|
||||
_, err = s.repo.Update(ctx, PartnerDB)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error("error when update Partner", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user