from typing import List, Optional from uuid import UUID from pydantic import Field from src.masterdata.schema import MasterdataBase from src.models import CommonParams, DefaultBase, Pagination class MasterDataSimulationBase(MasterdataBase): simulation_id: Optional[UUID] = Field(None) class MasterDataSimulationCreate(MasterDataSimulationBase): simulation_id: UUID = Field(...) name: str = Field(...) description: str = Field(...) unit_of_measurement: str = Field(...) value_num: float = Field( ..., le=1_000_000_000_000_000 ) value_str: str = Field(...) seq: int = Field(...) class MasterDataSimulationUpdate(MasterDataSimulationBase): pass class BulkMasterDataSimulationUpdate(DefaultBase): simulation_id: UUID = Field(...) updates: List[dict] class MasterDataSimulationRead(MasterDataSimulationBase): id: UUID class MasterDataSimulationPagination(Pagination): items: List[MasterDataSimulationRead] = [] class QueryParams(CommonParams): simulation_id: UUID = Field( ..., description="Simulation identifier", ) items_per_page: Optional[int] = Field( default=5, ge=1, le=1000, description="Items per page", alias="itemsPerPage", ) search: Optional[str] = Field( default=None, description="Search keyword", )