Added backend ability to sort by combined_name
This commit is contained in:
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user