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