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 }