import { fail } from '@sveltejs/kit'; import { db } from '$lib/server/db'; import { groceries } from '$lib/server/db/schema'; import { eq, desc } from 'drizzle-orm'; import type { Actions, PageServerLoad } from './$types'; export const load: PageServerLoad = async () => { const items = await db .select() .from(groceries) .where(eq(groceries.checked, false)) .orderBy(desc(groceries.createdAt)); return { items }; }; export const actions: Actions = { add: async ({ request }) => { const data = await request.formData(); const name = data.get('name')?.toString().trim(); if (!name) { return fail(400, { error: 'Name is required' }); } await db.insert(groceries).values({ name, createdAt: new Date().toISOString(), }); return { success: true }; }, toggle: async ({ request }) => { const data = await request.formData(); const id = Number(data.get('id')); const [item] = await db .select() .from(groceries) .where(eq(groceries.id, id)); if (!item) { return fail(404, { error: 'Item not found' }); } await db .update(groceries) .set({ checked: !item.checked }) .where(eq(groceries.id, id)); return { success: true }; }, };