from typing import Optional from pydantic import BaseModel, Field # Shared properties class ProductBase(BaseModel): name: Optional[str] = None description: Optional[str] = None sku: Optional[str] = None barcode: Optional[str] = None price: Optional[float] = None cost: Optional[float] = None is_active: Optional[bool] = True category_id: Optional[int] = None supplier_id: Optional[int] = None # Properties to receive via API on creation class ProductCreate(ProductBase): name: str sku: str price: float = Field(..., gt=0) cost: float = Field(..., ge=0) # Properties to receive via API on update class ProductUpdate(ProductBase): pass class ProductInDBBase(ProductBase): id: int class Config: orm_mode = True # Additional properties to return via API class Product(ProductInDBBase): pass # Additional properties stored in DB class ProductInDB(ProductInDBBase): pass