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 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 class Config: from_attributes = True class InventoryItemBase(BaseModel): name: str sku: str description: Optional[str] = None quantity: int = 0 unit_price: float minimum_stock: int = 0 category_id: Optional[int] = None supplier_id: Optional[int] = None class InventoryItemCreate(InventoryItemBase): pass class InventoryItemUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None quantity: Optional[int] = None unit_price: Optional[float] = None minimum_stock: Optional[int] = None category_id: Optional[int] = None supplier_id: Optional[int] = None class InventoryItem(InventoryItemBase): id: int created_at: datetime updated_at: datetime category: Optional[Category] = None supplier: Optional[Supplier] = None class Config: from_attributes = True