84 lines
1.7 KiB
Python
84 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
from uuid import UUID
|
|
|
|
from cpv3.common.schemas import Schema
|
|
|
|
|
|
JobStatusEnum = Literal["PENDING", "RUNNING", "FAILED", "CANCELLED", "DONE"]
|
|
JobTypeEnum = Literal[
|
|
"MEDIA_PROBE",
|
|
"SILENCE_REMOVE",
|
|
"SILENCE_DETECT",
|
|
"SILENCE_APPLY",
|
|
"MEDIA_CONVERT",
|
|
"TRANSCRIPTION_GENERATE",
|
|
"CAPTIONS_GENERATE",
|
|
"FRAME_EXTRACT",
|
|
]
|
|
|
|
|
|
class JobRead(Schema):
|
|
id: UUID
|
|
|
|
broker_id: str
|
|
user_id: UUID | None
|
|
project_id: UUID | None
|
|
|
|
input_data: dict | None
|
|
output_data: dict | None
|
|
|
|
status: JobStatusEnum
|
|
job_type: JobTypeEnum
|
|
|
|
project_pct: float | None
|
|
error_message: str | None
|
|
current_message: str | None
|
|
started_at: datetime | None
|
|
finished_at: datetime | None
|
|
|
|
is_active: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class JobCreate(Schema):
|
|
broker_id: str
|
|
project_id: UUID | None = None
|
|
input_data: dict | None = None
|
|
status: JobStatusEnum = "PENDING"
|
|
job_type: JobTypeEnum
|
|
|
|
|
|
class JobUpdate(Schema):
|
|
output_data: dict | None = None
|
|
status: JobStatusEnum | None = None
|
|
project_pct: float | None = None
|
|
error_message: str | None = None
|
|
current_message: str | None = None
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
|
|
|
|
class JobEventRead(Schema):
|
|
id: UUID
|
|
job_id: UUID
|
|
event_type: str
|
|
payload: dict | None
|
|
|
|
is_active: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class JobEventCreate(Schema):
|
|
job_id: UUID
|
|
event_type: str
|
|
payload: dict | None = None
|
|
|
|
|
|
class JobEventUpdate(Schema):
|
|
payload: dict | None = None
|