2025-12-10 12:02:17 +08:00

52 lines
1.4 KiB
Python

from datetime import datetime
from typing import Any, List, Optional
from pydantic import BaseModel, ConfigDict
from backend.modules.jobs.models import JobItemAction, JobItemResourceType, JobItemStatus, JobStatus, JobType
class JobOut(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
job_uuid: str
job_type: JobType
status: JobStatus
progress: int
total_count: Optional[int] = None
success_count: Optional[int] = None
fail_count: Optional[int] = None
skipped_count: Optional[int] = None
payload: Optional[Any] = None
error_message: Optional[str] = None
created_by_user_id: Optional[int] = None
created_for_customer: Optional[int] = None
created_at: datetime
started_at: Optional[datetime] = None
finished_at: Optional[datetime] = None
updated_at: datetime
class JobListResponse(BaseModel):
items: List[JobOut]
total: int
class JobItemOut(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
job_id: int
resource_type: JobItemResourceType
resource_id: Optional[int] = None
account_id: Optional[str] = None
region: Optional[str] = None
instance_id: Optional[str] = None
action: JobItemAction
status: JobItemStatus
error_message: Optional[str] = None
extra: Optional[Any] = None
created_at: datetime
updated_at: datetime