import enum from datetime import datetime from sqlalchemy import DateTime, Enum, String, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base class PrinterStatus(enum.Enum): idle = "idle" printing = "printing" error = "error" offline = "offline" class Printer(Base): __tablename__ = "printers" id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(100)) model: Mapped[str | None] = mapped_column(String(100)) location: Mapped[str | None] = mapped_column(String(100)) status: Mapped[PrinterStatus] = mapped_column( Enum(PrinterStatus), default=PrinterStatus.offline ) created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) updated_at: Mapped[datetime] = mapped_column( DateTime, server_default=func.now(), onupdate=func.now() ) jobs: Mapped[list["PrintJob"]] = relationship(back_populates="printer") todos: Mapped[list["Todo"]] = relationship(back_populates="printer")