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