Added backend ability to sort by combined_name

This commit is contained in:
Donkie
2024-01-30 18:19:52 +01:00
parent 414c11cd7f
commit 290eb5cb81

View File

@@ -148,16 +148,20 @@ async def find(
if sort_by is not None: if sort_by is not None:
for fieldstr, order in sort_by.items(): for fieldstr, order in sort_by.items():
sorts = []
if fieldstr == "remaining_weight": if fieldstr == "remaining_weight":
stmt = stmt.add_columns((models.Filament.weight - models.Spool.used_weight).label("remaining_weight")) stmt = stmt.add_columns((models.Filament.weight - models.Spool.used_weight).label("remaining_weight"))
field = sqlalchemy.column("remaining_weight") sorts.append(sqlalchemy.column("remaining_weight"))
elif fieldstr == "filament.combined_name":
sorts.append(models.Vendor.name)
sorts.append(models.Filament.name)
else: else:
field = parse_nested_field(models.Spool, fieldstr) sorts.append(parse_nested_field(models.Spool, fieldstr))
if order == SortOrder.ASC: if order == SortOrder.ASC:
stmt = stmt.order_by(field.asc()) stmt = stmt.order_by(*(f.asc() for f in sorts))
elif order == SortOrder.DESC: elif order == SortOrder.DESC:
stmt = stmt.order_by(field.desc()) stmt = stmt.order_by(*(f.desc() for f in sorts))
rows = await db.execute(stmt) rows = await db.execute(stmt)
result = list(rows.unique().scalars().all()) result = list(rows.unique().scalars().all())