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) }