from typing import Optional, List from datetime import datetime from pydantic import BaseModel, Field from app.models.order import OrderStatus # OrderItem schemas class OrderItemBase(BaseModel): product_id: Optional[int] = None quantity: Optional[int] = None unit_price: Optional[float] = None class OrderItemCreate(OrderItemBase): product_id: int quantity: int = Field(..., gt=0) unit_price: float = Field(..., gt=0) class OrderItemUpdate(OrderItemBase): pass class OrderItemInDBBase(OrderItemBase): id: int order_id: int class Config: orm_mode = True class OrderItem(OrderItemInDBBase): pass class OrderItemInDB(OrderItemInDBBase): pass # Order schemas class OrderBase(BaseModel): status: Optional[OrderStatus] = None notes: Optional[str] = None class OrderCreate(OrderBase): order_items: List[OrderItemCreate] class OrderUpdate(OrderBase): pass class OrderInDBBase(OrderBase): id: int order_date: datetime total_amount: float user_id: int class Config: orm_mode = True class Order(OrderInDBBase): order_items: List[OrderItem] = [] class OrderInDB(OrderInDBBase): pass