print_log.py 1.4 KB

12345678910111213141516171819202122232425262728293031
  1. from datetime import datetime
  2. from sqlalchemy import DateTime, Float, Integer, String, func
  3. from sqlalchemy.orm import Mapped, mapped_column
  4. from backend.app.core.database import Base
  5. class PrintLogEntry(Base):
  6. """Independent print log entry. Written when print events occur.
  7. This is a separate table from archives/queue — clearing the log
  8. never touches archives or queue items.
  9. """
  10. __tablename__ = "print_log_entries"
  11. id: Mapped[int] = mapped_column(primary_key=True)
  12. print_name: Mapped[str | None] = mapped_column(String(255))
  13. printer_name: Mapped[str | None] = mapped_column(String(255))
  14. printer_id: Mapped[int | None] = mapped_column(Integer)
  15. status: Mapped[str] = mapped_column(String(20)) # completed, failed, stopped, cancelled, skipped
  16. started_at: Mapped[datetime | None] = mapped_column(DateTime)
  17. completed_at: Mapped[datetime | None] = mapped_column(DateTime)
  18. duration_seconds: Mapped[int | None] = mapped_column(Integer)
  19. filament_type: Mapped[str | None] = mapped_column(String(50))
  20. filament_color: Mapped[str | None] = mapped_column(String(50))
  21. filament_used_grams: Mapped[float | None] = mapped_column(Float)
  22. thumbnail_path: Mapped[str | None] = mapped_column(String(500))
  23. created_by_username: Mapped[str | None] = mapped_column(String(100))
  24. created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())