from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field from app.models.order import OrderStatus # Order Item Schema class OrderItemBase(BaseModel): product_id: int quantity: int = Field(1, gt=0) unit_price: Optional[float] = None class OrderItemCreate(OrderItemBase): pass class OrderItemUpdate(OrderItemBase): pass class OrderItemInDBBase(OrderItemBase): id: int order_id: int total_price: float class Config: from_attributes = True class OrderItem(OrderItemInDBBase): pass class OrderItemInDB(OrderItemInDBBase): pass # Order Schema class OrderBase(BaseModel): user_id: Optional[int] = None shipping_address: Optional[str] = None status: Optional[OrderStatus] = OrderStatus.PENDING class OrderCreate(OrderBase): user_id: int shipping_address: str items: List[OrderItemCreate] class OrderUpdate(OrderBase): pass class OrderInDBBase(OrderBase): id: int order_number: str total_amount: float created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class Order(OrderInDBBase): items: List[OrderItem] = [] class OrderInDB(OrderInDBBase): pass