local_preset.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """Model for locally stored slicer presets (imported from OrcaSlicer, etc.)."""
  2. from datetime import datetime
  3. from sqlalchemy import DateTime, Integer, String, Text, func
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from backend.app.core.database import Base
  6. class LocalPreset(Base):
  7. """A locally stored slicer preset, typically imported from OrcaSlicer."""
  8. __tablename__ = "local_presets"
  9. id: Mapped[int] = mapped_column(primary_key=True)
  10. name: Mapped[str] = mapped_column(String(300))
  11. preset_type: Mapped[str] = mapped_column(String(20)) # filament, printer, process
  12. source: Mapped[str] = mapped_column(String(50), default="orcaslicer") # orcaslicer, manual
  13. # Core fields extracted for filtering / AMS config
  14. filament_type: Mapped[str | None] = mapped_column(String(50))
  15. filament_vendor: Mapped[str | None] = mapped_column(String(200))
  16. nozzle_temp_min: Mapped[int | None] = mapped_column(Integer)
  17. nozzle_temp_max: Mapped[int | None] = mapped_column(Integer)
  18. pressure_advance: Mapped[str | None] = mapped_column(String(50))
  19. default_filament_colour: Mapped[str | None] = mapped_column(String(50))
  20. filament_cost: Mapped[str | None] = mapped_column(String(50))
  21. filament_density: Mapped[str | None] = mapped_column(String(50))
  22. compatible_printers: Mapped[str | None] = mapped_column(Text) # JSON array
  23. # Full resolved JSON blob
  24. setting: Mapped[str] = mapped_column(Text)
  25. # Inheritance info
  26. inherits: Mapped[str | None] = mapped_column(String(300))
  27. version: Mapped[str | None] = mapped_column(String(50))
  28. created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now())
  29. updated_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now(), onupdate=func.now())