From e5206ec07b6dfd2af3c0df9f9acf3693a9f6e095 Mon Sep 17 00:00:00 2001 From: Ben Senescu <44480372+bensenescu@users.noreply.github.com> Date: Tue, 7 Apr 2026 00:36:17 -0400 Subject: [PATCH] fix: batch saved keyword inserts for D1 (#85) --- .../repositories/KeywordResearchRepository.ts | 16 +++++++++------- src/types/schemas/keywords.ts | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/server/features/keywords/repositories/KeywordResearchRepository.ts b/src/server/features/keywords/repositories/KeywordResearchRepository.ts index 3cee641..5063b1e 100644 --- a/src/server/features/keywords/repositories/KeywordResearchRepository.ts +++ b/src/server/features/keywords/repositories/KeywordResearchRepository.ts @@ -66,18 +66,20 @@ async function saveKeywordsToProject(params: { }) { if (params.keywords.length === 0) return; - await db - .insert(savedKeywords) - .values( - params.keywords.map((keyword) => ({ + const [first, ...rest] = params.keywords.map((keyword) => + db + .insert(savedKeywords) + .values({ id: crypto.randomUUID(), projectId: params.projectId, keyword, locationCode: params.locationCode, languageCode: params.languageCode, - })), - ) - .onConflictDoNothing(); + }) + .onConflictDoNothing(), + ); + + await db.batch([first, ...rest]); } async function listSavedKeywordsByProject(projectId: string) { diff --git a/src/types/schemas/keywords.ts b/src/types/schemas/keywords.ts index fe5f7c0..cd5da32 100644 --- a/src/types/schemas/keywords.ts +++ b/src/types/schemas/keywords.ts @@ -16,7 +16,7 @@ export const researchKeywordsSchema = z.object({ export const saveKeywordsSchema = z.object({ projectId: z.string().min(1), - keywords: z.array(z.string().min(1)).min(1).max(200), + keywords: z.array(z.string().min(1)).min(1).max(500), locationCode: z.number().int().positive().default(2840), languageCode: z.string().min(2).max(8).default("en"), metrics: z @@ -54,7 +54,7 @@ export const saveKeywordsSchema = z.object({ .optional(), }), ) - .max(200) + .max(500) .optional(), });