52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
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
|