Source code for imednet.endpoints.jobs
"""Endpoint for checking job status in a study."""
from imednet.core.endpoint.dispatch import execute_operation
from imednet.core.endpoint.edc_mixin import EdcAsyncListGetEndpoint, EdcSyncListGetEndpoint
from imednet.core.endpoint.operations.get import PathGetOperation
from imednet.core.paginator import AsyncJsonListPaginator, JsonListPaginator
from imednet.models.jobs import JobStatus
from imednet.utils.typing import ItemId
[docs]class JobsOperationDef:
"""Definition for Job operations."""
PATH = "jobs"
MODEL = JobStatus
PAGINATOR_CLS = JsonListPaginator
ASYNC_PAGINATOR_CLS = AsyncJsonListPaginator
@execute_operation # type: ignore
def get(self, study_key: str | None, item_id: ItemId) -> PathGetOperation[JobStatus]:
"""Get a single Job by ID."""
self._require_item_id(item_id) # type: ignore
path = self._get_endpoint_path(study_key, item_id) # type: ignore
return PathGetOperation[JobStatus](
path=path,
parse_func=self._parse_item, # type: ignore
not_found_func=lambda: self._raise_not_found(study_key, item_id), # type: ignore
)
[docs]class JobsEndpoint(JobsOperationDef, EdcSyncListGetEndpoint[JobStatus]): # type: ignore[misc]
"""Synchronous endpoint for managing Jobs."""
[docs]class AsyncJobsEndpoint(JobsOperationDef, EdcAsyncListGetEndpoint[JobStatus]): # type: ignore[misc]
"""Asynchronous endpoint for managing Jobs."""