from pydantic import BaseModel, Field from typing import Optional from datetime import datetime # Shared properties class ProductBase(BaseModel): name: str description: Optional[str] = None sku: str barcode: Optional[str] = None category_id: Optional[str] = None supplier_id: Optional[str] = None cost_price: float = Field(ge=0) selling_price: float = Field(ge=0) reorder_level: int = Field(ge=0, default=0) is_active: bool = True # Properties to receive via API on creation class ProductCreate(ProductBase): pass # Properties to receive via API on update class ProductUpdate(ProductBase): name: Optional[str] = None sku: Optional[str] = None cost_price: Optional[float] = None selling_price: Optional[float] = None class ProductInDBBase(ProductBase): id: str current_stock: int created_at: datetime updated_at: datetime class Config: from_attributes = True # Additional properties to return via API class Product(ProductInDBBase): pass