"""Update job schemas.""" from datetime import datetime from pydantic import BaseModel, ConfigDict from app.models.update_job import JobStatus, JobType class JobTriggerRequest(BaseModel): customer_id: int type: JobType # Target server; not required for NETWORK_SCAN server_id: int | None = None # Optional parameters reboot_if_required: bool = False scan_subnet: str | None = None # e.g. "192.168.1.0/24" class UpdateJobRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int customer_id: int server_id: int | None satellite_id: int | None type: JobType status: JobStatus progress_percent: int current_phase: str | None created_by: str claimed_at: datetime | None started_at: datetime | None finished_at: datetime | None error: str | None created_at: datetime class UpdateLogRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: int job_id: int timestamp: datetime level: str line: str class BatchJobTriggerRequest(BaseModel): """Trigger one job per server (or all servers of a customer).""" customer_id: int type: JobType server_ids: list[int] | None = None # None = all servers of the customer reboot_if_required: bool = False class BatchJobTriggerResponse(BaseModel): created: int job_ids: list[int]