diff options
Diffstat (limited to 'order-service/app/schemas/order.py')
| -rw-r--r-- | order-service/app/schemas/order.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/order-service/app/schemas/order.py b/order-service/app/schemas/order.py new file mode 100644 index 0000000..47aff2c --- /dev/null +++ b/order-service/app/schemas/order.py @@ -0,0 +1,36 @@ +from datetime import datetime +from decimal import Decimal +from pydantic import BaseModel, Field, ConfigDict + + +class OrderItemCreate(BaseModel): + product_id: int = Field(..., gt=0, description="Database ID of the product") + quantity: int = Field(..., gt=0, le=100, description="Must buy at least 1, max 100") + price: Decimal = Field(..., gt=0.00, description="The price per unit") + + +class OrderItemOut(BaseModel): + id: int + product_id: int + quantity: int + price: Decimal + + model_config = ConfigDict(from_attributes=True) + + +class OrderCreate(BaseModel): + customer_id: int = Field(..., gt=0) + items: list[OrderItemCreate] = Field( + ..., min_length=1, description="Order must contain at least 1 item" + ) + + +class OrderOut(BaseModel): + id: int + customer_id: int + status: str + total_price: Decimal + created_at: datetime + items: list[OrderItemOut] + + model_config = ConfigDict(from_attributes=True) |
