from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field # Shared properties class CartItemBase(BaseModel): product_id: int quantity: int = Field(..., gt=0) # Properties to receive on cart item creation class CartItemCreate(CartItemBase): pass # Properties to receive on cart item update class CartItemUpdate(BaseModel): quantity: int = Field(..., gt=0) # Properties shared by models stored in DB class CartItemInDBBase(CartItemBase): id: int user_id: int unit_price: float created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True # Properties to return to client class CartItem(CartItemInDBBase): pass # Properties to return for cart summary class CartSummary(BaseModel): items: List[CartItem] total: float