from pydantic import BaseModel, ConfigDict
from typing import Optional
from app.models.inventory import InventoryType


class InventoryItemBase(BaseModel):
    sku: Optional[str] = None
    name: str
    type: InventoryType
    unit: Optional[str] = None
    quantity_on_hand: Optional[float] = 0.0
    min_threshold: Optional[float] = None
    location: Optional[str] = None
    supplier_id: Optional[int] = None


class InventoryItemCreate(InventoryItemBase):
    pass


class InventoryItemUpdate(BaseModel):
    sku: Optional[str] = None
    name: Optional[str] = None
    type: Optional[InventoryType] = None
    unit: Optional[str] = None
    quantity_on_hand: Optional[float] = None
    min_threshold: Optional[float] = None
    location: Optional[str] = None
    supplier_id: Optional[int] = None


class InventoryItemOut(InventoryItemBase):
    id: int
    model_config = ConfigDict(from_attributes=True)
