Files
main_backend/cpv3/modules/jobs/schemas.py
T
2026-02-27 23:33:56 +03:00

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