codeword/internal/services/promocode_service.go
2024-01-11 21:23:15 +03:00

39 lines
881 B
Go

package services
import (
"codeword/internal/models"
"context"
"go.uber.org/zap"
)
type PromoCodeRepository interface {
CreatePromoCode(ctx context.Context, promoCode *models.PromoCode) (*models.PromoCode, error)
}
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) {
promoCode, err := s.promoCodeRepo.CreatePromoCode(ctx, req)
if err != nil {
s.logger.Error("Failed to add promocode in database", zap.Error(err))
return nil, err
}
return promoCode, nil
}