from pydantic import BaseModel from typing import Optional, List from datetime import datetime class ProductCreate(BaseModel): name: str description: str price: float discount_price: Optional[float] = None category_id: int gender: str # men, women brand: str sizes: List[str] colors: List[str] stock: int images: List[str] is_featured: bool = False is_on_sale: bool = False class ProductUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None price: Optional[float] = None discount_price: Optional[float] = None category_id: Optional[int] = None gender: Optional[str] = None brand: Optional[str] = None sizes: Optional[List[str]] = None colors: Optional[List[str]] = None stock: Optional[int] = None images: Optional[List[str]] = None is_featured: Optional[bool] = None is_on_sale: Optional[bool] = None class ProductResponse(BaseModel): id: int name: str description: str price: float discount_price: Optional[float] category_id: int gender: str brand: str sizes: List[str] colors: List[str] stock: int images: List[str] is_featured: bool is_on_sale: bool created_at: datetime class Config: from_attributes = True class ProductDetailResponse(ProductResponse): pass