from datetime import datetime from typing import ForwardRef, List, Optional from uuid import UUID from pydantic import Field from src.models import CommonParams, DefaultBase, Pagination class EquipmentMasterBase(DefaultBase): parent_id: Optional[UUID] = Field(None) name: Optional[str] = Field(None) created_at: Optional[datetime] = Field(None) updated_at: Optional[datetime] = Field(None) class EquipmentMasterCreate(EquipmentMasterBase): pass class EquipmentTree(DefaultBase): level_no: Optional[int] = Field(None) name: Optional[str] = Field(None) class EquipmentMasterUpdate(EquipmentMasterBase): pass EquipmentMasterReadRef = ForwardRef("EquipmentMasterRead") class EquipmentMasterRead(EquipmentMasterBase): id: UUID equipment_tree_id: Optional[UUID] = Field(None) equipment_tree: EquipmentTree category_id: Optional[UUID] = Field(None) system_tag: Optional[str] = Field(None) assetnum: Optional[str] = Field(None) location_tag: Optional[str] = Field(None) children: List[EquipmentMasterReadRef] # type: ignore class EquipmentMasterPaginated(Pagination): items: List[EquipmentMasterRead] = [] class EquipmentMasterQuery(CommonParams): parent_id : Optional[str] = None items_per_page : Optional[int] = 5 search : Optional[str] = None