Newer
Older
CNCTools / ReferenceSurfaceGenerator / backend / app / models.py
import datetime
import uuid
from enum import Enum
from typing import Optional, Dict, Any

from pydantic import BaseModel, Field

class JobStatus(str, Enum):
    PENDING = "PENDING"
    QUEUED = "QUEUED"
    PROCESSING = "PROCESSING"
    COMPLETE = "COMPLETE"
    FAILED = "FAILED"

class Job(BaseModel):
    id: uuid.UUID
    feature_id: str
    filename: str
    status: JobStatus = JobStatus.PENDING
    progress: int = 0
    message: str = "Job created, awaiting processing."
    
    # Paths on the server filesystem
    input_path: str
    output_path: Optional[str] = None
    
    # URL for downloading the output
    download_url: Optional[str] = None
    # URL for viewing the output
    view_url: Optional[str] = None

    # Processing parameters
    params: Dict[str, Any] = {}

    timestamp: datetime.datetime = Field(default_factory=lambda: datetime.datetime.now(datetime.timezone.utc))