from datetime import datetime from typing import Optional from pydantic import BaseModel class CategoryBase(BaseModel): name: str description: Optional[str] = None class CategoryCreate(CategoryBase): pass class CategoryUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None class Category(CategoryBase): id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class SupplierBase(BaseModel): name: str contact_person: Optional[str] = None email: Optional[str] = None phone: Optional[str] = None address: Optional[str] = None class SupplierCreate(SupplierBase): pass class SupplierUpdate(BaseModel): name: Optional[str] = None contact_person: Optional[str] = None email: Optional[str] = None phone: Optional[str] = None address: Optional[str] = None class Supplier(SupplierBase): id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class InventoryItemBase(BaseModel): name: str sku: str description: Optional[str] = None category_id: Optional[int] = None supplier_id: Optional[int] = None quantity: int = 0 min_quantity: int = 0 unit_price: float class InventoryItemCreate(InventoryItemBase): pass class InventoryItemUpdate(BaseModel): name: Optional[str] = None sku: Optional[str] = None description: Optional[str] = None category_id: Optional[int] = None supplier_id: Optional[int] = None quantity: Optional[int] = None min_quantity: Optional[int] = None unit_price: Optional[float] = None class InventoryItem(InventoryItemBase): id: int created_at: datetime updated_at: Optional[datetime] = None category: Optional[Category] = None supplier: Optional[Supplier] = None class Config: from_attributes = True