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

from pydantic import BaseModel

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

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

    # Processing parameters
    num_layers: int = 20
    num_points_per_layer: int = 30

    timestamp: datetime.datetime = datetime.datetime.now(datetime.timezone.utc)