Newer
Older
CNCTools / ReferenceSurfaceGenerator / backend / app / features / dxf_layered_curves / models.py
from pydantic import BaseModel, Field
from typing import Optional
import uuid
from enum import Enum
import datetime

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

class JobParams(BaseModel):
    num_layers: int = Field(20, description="Number of layers to slice the mesh into.")
    num_points_per_layer: int = Field(30, description="Number of points to define the curve of each layer.")

class Job(BaseModel):
    id: uuid.UUID
    filename: str
    status: JobStatus = JobStatus.PENDING
    progress: int = 0
    message: str = "Job created, awaiting processing."
    input_path: str
    output_path: str
    download_url: Optional[str] = None
    params: JobParams
    timestamp: datetime.datetime = Field(default_factory=lambda: datetime.datetime.now(datetime.timezone.utc))