from typing import List, Optional from datetime import datetime from pydantic import BaseModel, Field from app.models.order import OrderStatus class OrderItemBase(BaseModel): product_id: str quantity: int = Field(..., gt=0) price: float = Field(..., gt=0) class OrderItemCreate(OrderItemBase): pass class OrderItemInDBBase(OrderItemBase): id: str order_id: str created_at: datetime updated_at: datetime model_config = { "from_attributes": True } class OrderItem(OrderItemInDBBase): pass class OrderBase(BaseModel): shipping_address: Optional[str] = None class OrderCreate(OrderBase): user_id: str class OrderUpdate(BaseModel): status: Optional[OrderStatus] = None shipping_address: Optional[str] = None payment_id: Optional[str] = None class OrderInDBBase(OrderBase): id: str user_id: str status: OrderStatus total_amount: float payment_id: Optional[str] = None created_at: datetime updated_at: datetime model_config = { "from_attributes": True } class Order(OrderInDBBase): items: List[OrderItem] = [] class OrderList(BaseModel): id: str status: OrderStatus total_amount: float created_at: datetime model_config = { "from_attributes": True }