feat(filament): add spool count and total remaining weight columns
Adds computed spool statistics to filament list: - spool_count: Number of non-archived spools of this filament - total_remaining_weight: Sum of remaining weight across all spools Backend changes: - Modified database/filament.py find() to compute stats via subquery - Added fields to Filament pydantic model in api/v1/models.py - Updated filament API endpoint to include stats in response Frontend changes: - Added fields to IFilament interface - Added columns to filament list table - Added translation keys Closes #15 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -366,7 +366,7 @@ async def find(
|
||||
else:
|
||||
filter_by_ids = None
|
||||
|
||||
db_items, total_count = await filament.find(
|
||||
db_items, total_count, spool_stats = await filament.find(
|
||||
db=db,
|
||||
ids=filter_by_ids,
|
||||
vendor_name=vendor_name if vendor_name is not None else vendor_name_old,
|
||||
@@ -383,7 +383,14 @@ async def find(
|
||||
# Set x-total-count header for pagination
|
||||
return JSONResponse(
|
||||
content=jsonable_encoder(
|
||||
(Filament.from_db(db_item) for db_item in db_items),
|
||||
(
|
||||
Filament.from_db(
|
||||
db_item,
|
||||
spool_count=spool_stats.get(db_item.id, (0, 0))[0],
|
||||
total_remaining_weight=spool_stats.get(db_item.id, (0, 0))[1],
|
||||
)
|
||||
for db_item in db_items
|
||||
),
|
||||
exclude_none=True,
|
||||
),
|
||||
headers={"x-total-count": str(total_count)},
|
||||
|
||||
Reference in New Issue
Block a user