From f24e35224ce5929f4e7713cd73d2b1c9084a390d Mon Sep 17 00:00:00 2001 From: Devin Zuczek Date: Fri, 16 Oct 2026 13:30:17 -0400 Subject: [PATCH] [api] fix a few other queries > 100 items --- apps/api/src/custom-avatar-items-db.ts | 7 ++++--- apps/api/src/events-db.ts | 10 ++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/apps/api/src/custom-avatar-items-db.ts b/apps/api/src/custom-avatar-items-db.ts index e2b7a1a..dd65f2a 100644 --- a/apps/api/src/custom-avatar-items-db.ts +++ b/apps/api/src/custom-avatar-items-db.ts @@ -297,10 +297,11 @@ export async function getCustomAvatarItems( ids: string[] ): Promise { if (ids.length === 0) return [] - const placeholders = ids.map((_, i) => `?${i + 1}`).join(', ') const { results } = await db - .prepare(`SELECT data FROM custom_avatar_item WHERE custom_avatar_item_id IN (${placeholders})`) - .bind(...ids) + .prepare( + `SELECT data FROM custom_avatar_item WHERE custom_avatar_item_id IN (SELECT value FROM json_each(?1))` + ) + .bind(JSON.stringify(ids)) .all() const byId = new Map(results.map(toDto).map((item) => [item.CustomAvatarItemId, item])) return ids.flatMap((id) => byId.get(id) ?? []) diff --git a/apps/api/src/events-db.ts b/apps/api/src/events-db.ts index c48e026..ef7bed8 100644 --- a/apps/api/src/events-db.ts +++ b/apps/api/src/events-db.ts @@ -926,10 +926,9 @@ export async function getEventById(db: D1Database, eventId: number): Promise { if (ids.length === 0) return [] - const placeholders = ids.map((_, i) => `?${i + 1}`).join(', ') const { results } = await db - .prepare(`SELECT data FROM event WHERE id IN (${placeholders})`) - .bind(...ids) + .prepare(`SELECT data FROM event WHERE id IN (SELECT value FROM json_each(?1))`) + .bind(JSON.stringify(ids)) .all() const byId = new Map() for (const r of results) { @@ -1027,10 +1026,9 @@ export async function getPublicEventsByPlayer( */ export async function getEventsByClubs(db: D1Database, clubIds: number[]): Promise { if (clubIds.length === 0) return [] - const placeholders = clubIds.map((_, i) => `?${i + 1}`).join(', ') const { results } = await db - .prepare(`SELECT data FROM event WHERE club_id IN (${placeholders})`) - .bind(...clubIds) + .prepare(`SELECT data FROM event WHERE club_id IN (SELECT value FROM json_each(?1))`) + .bind(JSON.stringify(clubIds)) .all() return results.map((r) => JSON.parse(r.data) as PlayerEvent).sort(bySoonest) }