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