from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class InventoryItemBase(BaseModel): name: str = Field(..., min_length=1, max_length=255) description: Optional[str] = None sku: str = Field(..., min_length=1, max_length=100) quantity: int = Field(..., ge=0) price: float = Field(..., gt=0) category: Optional[str] = Field(None, max_length=100) supplier: Optional[str] = Field(None, max_length=255) location: Optional[str] = Field(None, max_length=255) class InventoryItemCreate(InventoryItemBase): pass class InventoryItemUpdate(BaseModel): name: Optional[str] = Field(None, min_length=1, max_length=255) description: Optional[str] = None sku: Optional[str] = Field(None, min_length=1, max_length=100) quantity: Optional[int] = Field(None, ge=0) price: Optional[float] = Field(None, gt=0) category: Optional[str] = Field(None, max_length=100) supplier: Optional[str] = Field(None, max_length=255) location: Optional[str] = Field(None, max_length=255) class InventoryItem(InventoryItemBase): id: int created_at: datetime updated_at: datetime class Config: from_attributes = True