from typing import Optional from pydantic import BaseModel, Field # Shared properties class ProductBase(BaseModel): name: Optional[str] = None sku: Optional[str] = None description: Optional[str] = None weight: Optional[float] = Field(None, description="Weight in kg") dimensions: Optional[str] = Field(None, description="Format: 'length x width x height' in cm") price: Optional[float] = None is_active: Optional[bool] = True # Properties to receive via API on creation class ProductCreate(ProductBase): name: str sku: str price: float # Properties to receive via API on update class ProductUpdate(ProductBase): pass class ProductInDBBase(ProductBase): id: int class Config: from_attributes = True # Additional properties to return via API class Product(ProductInDBBase): pass # Additional properties stored in DB class ProductInDB(ProductInDBBase): pass