From 0685e9ece66fbcb09c9457027cf7bb2107cc0171 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sun, 18 Oct 2026 22:02:02 +0200 Subject: refactor: inject the database into services via a constructor Pilot on the categories service: a CategoriesService class holds the Drizzle handle, and services/index.ts wires the real instance once for the server while tests build their own on an in-memory database. AppDatabase moves from groceries.ts to db/types.ts. --- src/routes/groceries/categories/+page.server.ts | 13 +++++-------- src/routes/grocery/[id]/+page.server.ts | 4 ++-- 2 files changed, 7 insertions(+), 10 deletions(-) (limited to 'src/routes') diff --git a/src/routes/groceries/categories/+page.server.ts b/src/routes/groceries/categories/+page.server.ts index 6e0e3b7..e8794fa 100644 --- a/src/routes/groceries/categories/+page.server.ts +++ b/src/routes/groceries/categories/+page.server.ts @@ -1,9 +1,5 @@ import { fail } from '@sveltejs/kit'; -import { - loadAll, - deleteCategory, - reorder, -} from '$lib/server/services/categories'; +import { categoriesService } from '$lib/server/services'; import { addCategoryAction, idAction, @@ -17,13 +13,14 @@ export interface CategoriesOutput { } export const load: PageServerLoad = async () => { - return { categories: await loadAll() }; + return { categories: await categoriesService.loadAll() }; }; export const actions: Actions = { add: ({ request }) => addCategoryAction(request), - delete: ({ request }) => idAction(request, deleteCategory), + delete: ({ request }) => + idAction(request, (id) => categoriesService.deleteCategory(id)), reorder: async ({ request }) => { const data = await request.formData(); @@ -31,7 +28,7 @@ export const actions: Actions = { if (ids.length === 0) { return fail(400, { error: 'Aucune catégorie' }); } - await reorder(ids); + await categoriesService.reorder(ids); return { success: true }; }, }; diff --git a/src/routes/grocery/[id]/+page.server.ts b/src/routes/grocery/[id]/+page.server.ts index 232568c..0f386f3 100644 --- a/src/routes/grocery/[id]/+page.server.ts +++ b/src/routes/grocery/[id]/+page.server.ts @@ -2,7 +2,7 @@ import { error, fail, redirect } from '@sveltejs/kit'; import { db } from '$lib/server/db'; import { groceries, categories } from '$lib/server/db/schema'; import { eq } from 'drizzle-orm'; -import { loadAll as loadCategories } from '$lib/server/services/categories'; +import { categoriesService } from '$lib/server/services'; import { loadForGrocery, add as addRef, @@ -40,7 +40,7 @@ export const load: PageServerLoad = async ({ params, url }) => { : [null]; const refs = await loadForGrocery(id); - const cats = await loadCategories(); + const cats = await categoriesService.loadAll(); const from = url.searchParams.get('from') || '/'; return { -- cgit v1.3