From 3a7f9e40edb58b206d99a5d2e38ba34621227155 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Mon, 27 Jul 2026 20:40:10 +0200 Subject: feat: show best reference (by quality score) on each item in list view --- src/routes/+page.server.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/routes/+page.server.ts') diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 6d547e6..27ecbe1 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,21 +1,29 @@ import { fail } from '@sveltejs/kit'; import { db } from '$lib/server/db'; -import { groceries, categories } from '$lib/server/db/schema'; -import { eq, desc } from 'drizzle-orm'; +import { groceries, categories, references } from '$lib/server/db/schema'; +import { eq, desc, asc } from 'drizzle-orm'; import type { Actions, PageServerLoad } from './$types'; export const load: PageServerLoad = async () => { - const [items, cats] = await Promise.all([ + const [items, cats, refs] = await Promise.all([ db.select().from(groceries).orderBy(desc(groceries.createdAt)), db.select().from(categories).orderBy(desc(categories.name)), + db.select().from(references).orderBy(desc(references.qualityScore)), ]); const catMap = new Map(cats.map((c) => [c.id, c.name])); + const bestRef = new Map(); + for (const ref of refs) { + if (!bestRef.has(ref.groceryId)) { + bestRef.set(ref.groceryId, ref); + } + } return { items: items.map((i) => ({ ...i, categoryName: i.categoryId ? (catMap.get(i.categoryId) ?? null) : null, + bestRef: bestRef.get(i.id) ?? null, })), categories: cats, }; -- cgit v1.3