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))