from datetime import datetime from sqlalchemy import String, Boolean, DateTime, func from sqlalchemy.orm import Mapped, mapped_column, relationship from backend.app.core.database import Base class Printer(Base): __tablename__ = "printers" id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(100)) serial_number: Mapped[str] = mapped_column(String(50), unique=True) ip_address: Mapped[str] = mapped_column(String(45)) access_code: Mapped[str] = mapped_column(String(20)) model: Mapped[str | None] = mapped_column(String(50)) is_active: Mapped[bool] = mapped_column(Boolean, default=True) auto_archive: Mapped[bool] = mapped_column(Boolean, default=True) 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() ) # Relationships archives: Mapped[list["PrintArchive"]] = relationship( back_populates="printer", cascade="all, delete-orphan" ) smart_plug: Mapped["SmartPlug | None"] = relationship( back_populates="printer", uselist=False ) from backend.app.models.archive import PrintArchive # noqa: E402 from backend.app.models.smart_plug import SmartPlug # noqa: E402