diff --git a/backend/innercontext/api/products.py b/backend/innercontext/api/products.py
index efd4c6d..6dff032 100644
--- a/backend/innercontext/api/products.py
+++ b/backend/innercontext/api/products.py
@@ -172,7 +172,7 @@ class InventoryUpdate(SQLModel):
# ---------------------------------------------------------------------------
-@router.get("", response_model=list[ProductPublic])
+@router.get("", response_model=list[ProductWithInventory])
def list_products(
category: Optional[ProductCategory] = None,
brand: Optional[str] = None,
@@ -205,7 +205,25 @@ def list_products(
)
]
- return products
+ # Bulk-load inventory for all products in one query
+ product_ids = [p.id for p in products]
+ inventory_rows = (
+ session.exec(
+ select(ProductInventory).where(ProductInventory.product_id.in_(product_ids))
+ ).all()
+ if product_ids
+ else []
+ )
+ inv_by_product: dict = {}
+ for inv in inventory_rows:
+ inv_by_product.setdefault(inv.product_id, []).append(inv)
+
+ results = []
+ for p in products:
+ r = ProductWithInventory.model_validate(p, from_attributes=True)
+ r.inventory = inv_by_product.get(p.id, [])
+ results.append(r)
+ return results
@router.post("", response_model=ProductPublic, status_code=201)
diff --git a/frontend/src/routes/products/+page.server.ts b/frontend/src/routes/products/+page.server.ts
index 6bb8800..5248dcf 100644
--- a/frontend/src/routes/products/+page.server.ts
+++ b/frontend/src/routes/products/+page.server.ts
@@ -1,8 +1,7 @@
import { getProducts } from '$lib/api';
import type { PageServerLoad } from './$types';
-export const load: PageServerLoad = async ({ url }) => {
- const category = url.searchParams.get('category') ?? undefined;
- const products = await getProducts({ category });
- return { products, category };
+export const load: PageServerLoad = async () => {
+ const products = await getProducts();
+ return { products };
};
diff --git a/frontend/src/routes/products/+page.svelte b/frontend/src/routes/products/+page.svelte
index 6e1bd37..a8ab046 100644
--- a/frontend/src/routes/products/+page.svelte
+++ b/frontend/src/routes/products/+page.svelte
@@ -1,5 +1,6 @@
{data.products.length} products
+{totalCount} products