aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-07-29 10:31:36 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-07-29 10:31:36 +0200
commit684d3c954e3577a6488101bf5ee85e36439fd53c (patch)
treee9404b8eea57e811faaa9821675376f309d649e9 /src/lib/server/services
parent94212274cecf4da5f94b246a7ac9ab87077fb77f (diff)
feat: multi-select and bulk-update category from catalog
Diffstat (limited to 'src/lib/server/services')
-rw-r--r--src/lib/server/services/groceries.ts21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/lib/server/services/groceries.ts b/src/lib/server/services/groceries.ts
index db9e736..3c6de70 100644
--- a/src/lib/server/services/groceries.ts
+++ b/src/lib/server/services/groceries.ts
@@ -1,6 +1,6 @@
import { db as defaultDb } from '$lib/server/db';
import { groceries, categories, references } from '$lib/server/db/schema';
-import { eq, desc } from 'drizzle-orm';
+import { eq, desc, inArray } from 'drizzle-orm';
import type { LibSQLDatabase } from 'drizzle-orm/libsql';
import type * as schema from '$lib/server/db/schema';
import type { Category, Grocery, Reference } from './types';
@@ -109,6 +109,25 @@ export async function updateGrocery(
.where(eq(groceries.id, id));
}
+export async function updateGroceryCategory(
+ id: number,
+ categoryId: number | null,
+ db = defaultDb,
+): Promise<void> {
+ await db.update(groceries).set({ categoryId }).where(eq(groceries.id, id));
+}
+
+export async function bulkUpdateGroceryCategory(
+ ids: number[],
+ categoryId: number | null,
+ db = defaultDb,
+): Promise<void> {
+ await db
+ .update(groceries)
+ .set({ categoryId })
+ .where(inArray(groceries.id, ids));
+}
+
export async function deleteGrocery(id: number, db = defaultDb): Promise<void> {
await db.delete(groceries).where(eq(groceries.id, id));
}