chore: improved update logic

This commit is contained in:
ITQ
2025-11-16 14:43:43 +03:00
parent c519941c5a
commit b2e45b6f47
2 changed files with 17 additions and 16 deletions
+15
View File
@@ -14,6 +14,21 @@ var (
ErrInvalidOrderData = errors.New("invalid order data") 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 { type Order struct {
ID uuid.UUID `db:"id" json:"id"` ID uuid.UUID `db:"id" json:"id"`
Item string `db:"item" json:"item"` Item string `db:"item" json:"item"`
+2 -16
View File
@@ -20,13 +20,7 @@ func NewOrderService(repo repository.OrderRepository) *OrderService {
} }
func (s *OrderService) Create(ctx context.Context, item string, quantity int32) (*domain.Order, error) { func (s *OrderService) Create(ctx context.Context, item string, quantity int32) (*domain.Order, error) {
order := &domain.Order{ order, err := domain.NewOrder(uuid.New(), item, quantity)
ID: uuid.New(),
Item: item,
Quantity: quantity,
}
err := order.Validate()
if err != nil { if err != nil {
return nil, err 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) { func (s *OrderService) Update(ctx context.Context, id uuid.UUID, item string, quantity int32) (*domain.Order, error) {
order, err := s.repo.Get(ctx, id) order, err := domain.NewOrder(id, item, quantity)
if err != nil {
return nil, err
}
order.Item = item
order.Quantity = quantity
err = order.Validate()
if err != nil { if err != nil {
return nil, err return nil, err
} }