From b2e45b6f477df4b3a5f28ae633750454500f7dfd Mon Sep 17 00:00:00 2001 From: ITQ Date: Sun, 16 Nov 2025 14:43:43 +0300 Subject: [PATCH] chore: improved update logic --- internal/domain/order.go | 15 +++++++++++++++ internal/service/order.go | 18 ++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/internal/domain/order.go b/internal/domain/order.go index 0157d8f..6043094 100644 --- a/internal/domain/order.go +++ b/internal/domain/order.go @@ -14,6 +14,21 @@ var ( ErrInvalidOrderData = errors.New("invalid order data") ) +func NewOrder(id uuid.UUID, item string, quantity int32) (*Order, error) { + order := &Order{ + ID: id, + Item: item, + Quantity: quantity, + } + + err := order.Validate() + if err != nil { + return nil, err + } + + return order, nil +} + type Order struct { ID uuid.UUID `db:"id" json:"id"` Item string `db:"item" json:"item"` diff --git a/internal/service/order.go b/internal/service/order.go index 065e61c..b44ac8a 100644 --- a/internal/service/order.go +++ b/internal/service/order.go @@ -20,13 +20,7 @@ func NewOrderService(repo repository.OrderRepository) *OrderService { } func (s *OrderService) Create(ctx context.Context, item string, quantity int32) (*domain.Order, error) { - order := &domain.Order{ - ID: uuid.New(), - Item: item, - Quantity: quantity, - } - - err := order.Validate() + order, err := domain.NewOrder(uuid.New(), item, quantity) if err != nil { return nil, err } @@ -42,15 +36,7 @@ func (s *OrderService) Get(ctx context.Context, id uuid.UUID) (*domain.Order, er } func (s *OrderService) Update(ctx context.Context, id uuid.UUID, item string, quantity int32) (*domain.Order, error) { - order, err := s.repo.Get(ctx, id) - if err != nil { - return nil, err - } - - order.Item = item - order.Quantity = quantity - - err = order.Validate() + order, err := domain.NewOrder(id, item, quantity) if err != nil { return nil, err }