"""
Queue-related schemas.
"""

from datetime import datetime
from enum import Enum

from pydantic import BaseModel, Field


class JobStatus(str, Enum):
    """Job status enum."""

    PENDING = "0"
    PROCESSING = "1"
    FAILED = "2"
    COMPLETED = "3"


class JobBase(BaseModel):
    """Base job schema."""

    video_name: str = Field(..., description="Name of the video file")
    user_id: int = Field(..., description="User ID")
    interview_id: int = Field(..., description="Interview ID")
    question_id: int = Field(..., description="Question ID")
    interview_type: str = Field(..., description="Interview type (1=general, 2=custom)")
    data_process: str = Field(default="1", description="Data processing flag")


class JobCreate(JobBase):
    """Schema for creating a new job."""

    pass


class JobUpdate(BaseModel):
    """Schema for updating a job."""

    status: str | None = None
    process_start_time: datetime | None = None
    process_end_time: datetime | None = None
    duration: str | None = None
    exception: str | None = None
    tries: int | None = None


class JobResponse(JobBase):
    """Schema for job response."""

    id: str
    status: str
    tries: int
    created_at: datetime
    process_start_time: datetime | None = None
    process_end_time: datetime | None = None
    duration: str | None = None
    exception: str | None = None

    class Config:
        from_attributes = True


class QueueStatus(BaseModel):
    """Schema for queue status response."""

    total_jobs: int
    pending_jobs: int
    processing_jobs: int
    completed_jobs: int
    failed_jobs: int
    last_processed: datetime | None = None
    average_processing_time: float | None = None
