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)