from datetime import datetime from typing import List from pydantic import BaseModel, Field from app.schemas.product import Product # 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) class CartItemInDBBase(CartItemBase): id: int user_id: int created_at: datetime updated_at: datetime class Config: from_attributes = True # Additional properties to return via API class CartItem(CartItemInDBBase): pass # Additional properties stored in DB class CartItemInDB(CartItemInDBBase): pass class CartItemWithProduct(CartItem): product: Product class Cart(BaseModel): items: List[CartItemWithProduct] total: float