Files
bambuddy/backend/app/models/slot_preset.py
T
maziggy edf244c469 Add local profiles — import OrcaSlicer presets without Bambu Cloud (#310)
Users who use OrcaSlicer without Bambu Cloud can now import slicer
presets directly into Bambuddy. Supports .orca_filament, .bbscfg,
.bbsflmt, .zip, and .json exports with automatic inheritance resolution
via OrcaSlicer's GitHub base profiles (cached with 7-day TTL).
2026-02-09 17:00:02 +01:00

36 lines
1.5 KiB
Python

"""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