From e075698891d653330b5d5d0f80c2c3495aee6262 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Mon, 27 Jul 2026 19:53:11 +0200 Subject: feat: product references + grocery detail page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - references table (brand, price, unit, quality_score) with FK to groceries - /grocery/[id] page for managing references per item - Unit dropdown (€/kg, €/L, €/u) defaulting to €/kg - → link on all items navigates to detail page - Delete item moved from catalog to detail page --- src/lib/server/db/schema.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/lib/server') diff --git a/src/lib/server/db/schema.ts b/src/lib/server/db/schema.ts index 1d5fd9e..9cd6af8 100644 --- a/src/lib/server/db/schema.ts +++ b/src/lib/server/db/schema.ts @@ -1,4 +1,4 @@ -import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'; +import { sqliteTable, text, integer, real } from 'drizzle-orm/sqlite-core'; export const categories = sqliteTable('categories', { id: integer('id').primaryKey({ autoIncrement: true }), @@ -12,3 +12,14 @@ export const groceries = sqliteTable('groceries', { createdAt: text('created_at').notNull(), categoryId: integer('category_id').references(() => categories.id), }); + +export const references = sqliteTable('references', { + id: integer('id').primaryKey({ autoIncrement: true }), + groceryId: integer('grocery_id') + .notNull() + .references(() => groceries.id, { onDelete: 'cascade' }), + brand: text('brand').notNull(), + price: real('price'), + unit: text('unit'), + qualityScore: integer('quality_score'), +}); -- cgit v1.3