codeword/internal/services/promocode_service.go

39 lines
873 B
Go
Raw Normal View History

2024-01-11 16:29:53 +00:00
package services
import (
"codeword/internal/models"
"context"
"go.uber.org/zap"
)
type PromoCodeRepository interface {
2024-01-11 18:20:33 +00:00
CreatePromo(ctx context.Context, promoCode *models.PromoCode) (*models.PromoCode, error)
2024-01-11 16:29:53 +00:00
}
type PromoDeps struct {
Logger *zap.Logger
PromoCodeRepo PromoCodeRepository
}
type PromoCodeService struct {
logger *zap.Logger
promoCodeRepo PromoCodeRepository
}
func NewPromoCodeService(deps PromoDeps) *PromoCodeService {
return &PromoCodeService{
logger: deps.Logger,
promoCodeRepo: deps.PromoCodeRepo,
}
}
func (s *PromoCodeService) CreatePromoCode(ctx context.Context, req *models.PromoCode) (*models.PromoCode, error) {
2024-01-11 18:20:33 +00:00
promoCode, err := s.promoCodeRepo.CreatePromo(ctx, req)
if err != nil {
s.logger.Error("Failed to add promocode in database", zap.Error(err))
return nil, err
}
return promoCode, nil
2024-01-11 16:29:53 +00:00
}