printer.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from datetime import datetime
  2. from sqlalchemy import String, Boolean, DateTime, func
  3. from sqlalchemy.orm import Mapped, mapped_column, relationship
  4. from backend.app.core.database import Base
  5. class Printer(Base):
  6. __tablename__ = "printers"
  7. id: Mapped[int] = mapped_column(primary_key=True)
  8. name: Mapped[str] = mapped_column(String(100))
  9. serial_number: Mapped[str] = mapped_column(String(50), unique=True)
  10. ip_address: Mapped[str] = mapped_column(String(45))
  11. access_code: Mapped[str] = mapped_column(String(20))
  12. model: Mapped[str | None] = mapped_column(String(50))
  13. is_active: Mapped[bool] = mapped_column(Boolean, default=True)
  14. auto_archive: Mapped[bool] = mapped_column(Boolean, default=True)
  15. created_at: Mapped[datetime] = mapped_column(
  16. DateTime, server_default=func.now()
  17. )
  18. updated_at: Mapped[datetime] = mapped_column(
  19. DateTime, server_default=func.now(), onupdate=func.now()
  20. )
  21. # Relationships
  22. archives: Mapped[list["PrintArchive"]] = relationship(
  23. back_populates="printer", cascade="all, delete-orphan"
  24. )
  25. smart_plug: Mapped["SmartPlug | None"] = relationship(
  26. back_populates="printer", uselist=False
  27. )
  28. from backend.app.models.archive import PrintArchive # noqa: E402
  29. from backend.app.models.smart_plug import SmartPlug # noqa: E402