mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-09 15:35:39 +02:00
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
from datetime import datetime
|
|
from typing import Annotated
|
|
|
|
from pydantic import AfterValidator, BaseModel, Field
|
|
|
|
from backend.app.schemas.print_queue import UTCDatetime
|
|
from backend.app.utils.local_time import to_naive_utc
|
|
|
|
# Coerces any client-sent UTC offset to the naive UTC the DB stores.
|
|
NaiveUTCDatetime = Annotated[datetime | None, AfterValidator(to_naive_utc)]
|
|
|
|
|
|
class ScheduledDryingCreate(BaseModel):
|
|
printer_id: int
|
|
ams_id: int = 0
|
|
temp: int = Field(ge=45, le=85)
|
|
duration_hours: int = Field(ge=1, le=24)
|
|
# max_length matches the String(50) column: without it PostgreSQL 500s on
|
|
# an over-long value and SQLite silently accepts it.
|
|
filament: str = Field("", max_length=50)
|
|
rotate_tray: bool = False
|
|
start_after: NaiveUTCDatetime = None
|
|
|
|
|
|
class ScheduledDryingResponse(BaseModel):
|
|
id: int
|
|
printer_id: int
|
|
ams_id: int
|
|
temp: int
|
|
duration_hours: int
|
|
filament: str
|
|
rotate_tray: bool
|
|
# UTCDatetime, not a bare datetime: every queue route sends the Z suffix and
|
|
# the frontend parses these the same way.
|
|
start_after: UTCDatetime
|
|
status: str
|
|
waiting_reason: str | None
|
|
error_message: str | None
|
|
error_code: str | None = None
|
|
created_at: UTCDatetime
|
|
started_at: UTCDatetime
|
|
completed_at: UTCDatetime
|
|
|
|
model_config = {"from_attributes": True}
|