from typing import List, Optional from pydantic import BaseModel, Field # Cart Item schemas class CartItemBase(BaseModel): product_id: int quantity: int = Field(..., gt=0) class CartItemCreate(CartItemBase): pass class CartItemUpdate(BaseModel): quantity: Optional[int] = Field(None, gt=0) class CartItemResponse(CartItemBase): id: int unit_price: float subtotal: float class Config: from_attributes = True # Cart schemas class CartBase(BaseModel): user_id: int class CartCreate(CartBase): pass class CartResponse(CartBase): id: int items: List[CartItemResponse] = [] total: float class Config: from_attributes = True # Schema for adding items to cart class AddToCartRequest(CartItemBase): pass # Schema for cart summary class CartSummary(BaseModel): id: int total: float items_count: int class Config: from_attributes = True