generated from PenaSide/GolangTemplate
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
![]() |
package cart
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"log"
|
||
|
|
||
|
"go.uber.org/zap"
|
||
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/errors"
|
||
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
|
||
|
)
|
||
|
|
||
|
type accountRepository interface {
|
||
|
AddItemToCart(ctx context.Context, userID, itemID string) (*models.Account, errors.Error)
|
||
|
RemoveItemFromCart(ctx context.Context, userID, itemID string) (*models.Account, errors.Error)
|
||
|
}
|
||
|
|
||
|
type Deps struct {
|
||
|
Logger *zap.Logger
|
||
|
Repository accountRepository
|
||
|
}
|
||
|
|
||
|
type Service struct {
|
||
|
logger *zap.Logger
|
||
|
repository accountRepository
|
||
|
}
|
||
|
|
||
|
func New(deps *Deps) *Service {
|
||
|
if deps == nil {
|
||
|
log.Panicln("deps is nil on <New (cart service)>")
|
||
|
}
|
||
|
|
||
|
if deps.Logger == nil {
|
||
|
log.Panicln("logger is nil on <New (cart service)>")
|
||
|
}
|
||
|
|
||
|
if deps.Repository == nil {
|
||
|
log.Panicln("repository is nil on <New (cart service)>")
|
||
|
}
|
||
|
|
||
|
return &Service{
|
||
|
logger: deps.Logger,
|
||
|
repository: deps.Repository,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (receiver *Service) Remove(ctx context.Context, userID, itemID string) ([]string, errors.Error) {
|
||
|
account, err := receiver.repository.RemoveItemFromCart(ctx, userID, itemID)
|
||
|
if err != nil {
|
||
|
receiver.logger.Error("failed to remove item from cart on <Remove> of <CartService>", zap.Error(err))
|
||
|
return []string{}, err
|
||
|
}
|
||
|
|
||
|
return account.Cart, nil
|
||
|
}
|
||
|
|
||
|
func (receiver *Service) Add(ctx context.Context, userID, itemID string) ([]string, errors.Error) {
|
||
|
account, err := receiver.repository.AddItemToCart(ctx, userID, itemID)
|
||
|
if err != nil {
|
||
|
receiver.logger.Error("failed to add item to cart on <Add> of <CartService>", zap.Error(err))
|
||
|
return []string{}, err
|
||
|
}
|
||
|
|
||
|
return account.Cart, nil
|
||
|
}
|