diff --git a/service/create_order.go b/service/create_order.go index f5b1a80..297af43 100644 --- a/service/create_order.go +++ b/service/create_order.go @@ -58,6 +58,16 @@ func (s *Service) createNewOrder(ctx context.Context, input CreateOrderInput, us logctx.Debug(ctx, "creating new order", logger.String("orderId", orderId.String()), logger.String("clientOrderId", input.ClientOrderID.String())) + if input.Price.IsZero() || input.Price.IsNegative() { + logctx.Warn(ctx, "price has to be positive", logger.String("orderId", orderId.String()), logger.String("price", input.Price.String())) + return models.Order{}, models.ErrInvalidInput + } + + if input.Size.IsZero() || input.Size.IsNegative() { + logctx.Warn(ctx, "size has to be positive", logger.String("orderId", orderId.String()), logger.String("size", input.Size.String())) + return models.Order{}, models.ErrInvalidInput + } + order := models.Order{ Id: orderId, ClientOId: input.ClientOrderID, diff --git a/transport/rest/create_order.go b/transport/rest/create_order.go index 1453d3b..11f5804 100644 --- a/transport/rest/create_order.go +++ b/transport/rest/create_order.go @@ -190,7 +190,7 @@ func parseFields(_ http.ResponseWriter, input pFInput) (*pfParsed, error) { return nil, fmt.Errorf("'price' is not a valid number format") } - if decPrice.IsNegative() { + if decPrice.IsZero() || decPrice.IsNegative() { return nil, fmt.Errorf("'price' must be positive") } @@ -205,7 +205,7 @@ func parseFields(_ http.ResponseWriter, input pFInput) (*pfParsed, error) { return nil, fmt.Errorf("'size' is not a valid number format") } - if decSize.IsNegative() { + if decSize.IsZero() || decSize.IsNegative() { return nil, fmt.Errorf("'size' must be positive") }