from __future__ import annotations from datetime import datetime from uuid import UUID from pydantic import BaseModel, Field class JobCreate(BaseModel): job_type: str project_id: UUID dataset_id: UUID | None = None input_dataset_id: UUID | None = None output_dataset_id: UUID | None = None parameters_json: dict = Field(default_factory=dict) class JobRead(BaseModel): id: UUID job_type: str status: str project_id: UUID dataset_id: UUID | None = None input_dataset_id: UUID | None = None output_dataset_id: UUID | None = None parameters_json: dict result_json: dict | None = None error_message: str | None = None created_at: datetime | None = None started_at: datetime | None = None finished_at: datetime | None = None model_config = {"from_attributes": True} class JobStatus(BaseModel): id: UUID status: str error_message: str | None = None started_at: datetime | None = None finished_at: datetime | None = None result_json: dict | None = None model_config = {"from_attributes": True} class JobList(BaseModel): items: list[JobRead] total: int limit: int offset: int