| 1234567891011121314151617181920212223242526272829303132333435 |
- """Model for storing AMS slot to filament preset mappings.
- This stores the user's preferred filament preset for each AMS slot,
- similar to how Bambu Studio remembers preset selections.
- """
- from datetime import datetime
- from sqlalchemy import DateTime, ForeignKey, Integer, String, UniqueConstraint, func
- from sqlalchemy.orm import Mapped, mapped_column, relationship
- from backend.app.core.database import Base
- class SlotPresetMapping(Base):
- """Maps an AMS slot to a cloud filament preset."""
- __tablename__ = "slot_preset_mappings"
- __table_args__ = (UniqueConstraint("printer_id", "ams_id", "tray_id", name="uq_slot_preset"),)
- id: Mapped[int] = mapped_column(primary_key=True)
- printer_id: Mapped[int] = mapped_column(ForeignKey("printers.id", ondelete="CASCADE"))
- ams_id: Mapped[int] = mapped_column(Integer) # AMS unit ID (0, 1, 2, 3)
- tray_id: Mapped[int] = mapped_column(Integer) # Tray ID within AMS (0-3)
- preset_id: Mapped[str] = mapped_column(String(100)) # Cloud preset setting_id
- preset_name: Mapped[str] = mapped_column(String(200)) # Preset name for display
- preset_source: Mapped[str] = mapped_column(String(20), default="cloud") # cloud or local
- 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())
- # Relationship
- printer: Mapped["Printer"] = relationship()
- from backend.app.models.printer import Printer # noqa: E402
|