Added custom extra fields to backend

No integration tests yet, TBD
This commit is contained in:
Donkie
2024-01-06 16:22:35 +01:00
parent 71c29d2467
commit 77ac9d6a5c
14 changed files with 556 additions and 25 deletions

View File

@@ -41,6 +41,7 @@ async def create(
settings_extruder_temp: Optional[int] = None,
settings_bed_temp: Optional[int] = None,
color_hex: Optional[str] = None,
extra: Optional[dict[str, str]] = None,
) -> models.Filament:
"""Add a new filament to the database."""
vendor_item: Optional[models.Vendor] = None
@@ -62,6 +63,7 @@ async def create(
settings_extruder_temp=settings_extruder_temp,
settings_bed_temp=settings_bed_temp,
color_hex=color_hex,
extra=[models.FilamentField(key=k, value=v) for k, v in (extra or {}).items()],
)
db.add(filament)
await db.commit()
@@ -131,7 +133,7 @@ async def find(
stmt = stmt.order_by(field.desc())
rows = await db.execute(stmt)
result = list(rows.scalars().all())
result = list(rows.unique().scalars().all())
if total_count is None:
total_count = len(result)
@@ -152,6 +154,8 @@ async def update(
filament.vendor = None
else:
filament.vendor = await vendor.get_by_id(db, v)
elif k == "extra":
filament.extra = [models.FilamentField(key=k, value=v) for k, v in v.items()]
else:
setattr(filament, k, v)
await db.commit()