from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field from app.schemas.product import Product # Cart Item schemas class CartItemBase(BaseModel): product_id: int quantity: int = Field(1, gt=0) class CartItemCreate(CartItemBase): pass class CartItemUpdate(BaseModel): quantity: int = Field(..., gt=0) class CartItemInDBBase(CartItemBase): id: int cart_id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class CartItem(CartItemInDBBase): product: Optional[Product] = None # Cart schemas class CartBase(BaseModel): user_id: int class CartCreate(CartBase): pass class CartInDBBase(CartBase): id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class Cart(CartInDBBase): items: List[CartItem] = []