mirror of
https://github.com/djdevin/recflare.git
synced 2026-10-25 15:09:18 -07:00
[api] fix a few other queries > 100 items
This commit is contained in:
@@ -297,10 +297,11 @@ export async function getCustomAvatarItems(
|
|||||||
ids: string[]
|
ids: string[]
|
||||||
): Promise<CustomAvatarItem[]> {
|
): Promise<CustomAvatarItem[]> {
|
||||||
if (ids.length === 0) return []
|
if (ids.length === 0) return []
|
||||||
const placeholders = ids.map((_, i) => `?${i + 1}`).join(', ')
|
|
||||||
const { results } = await db
|
const { results } = await db
|
||||||
.prepare(`SELECT data FROM custom_avatar_item WHERE custom_avatar_item_id IN (${placeholders})`)
|
.prepare(
|
||||||
.bind(...ids)
|
`SELECT data FROM custom_avatar_item WHERE custom_avatar_item_id IN (SELECT value FROM json_each(?1))`
|
||||||
|
)
|
||||||
|
.bind(JSON.stringify(ids))
|
||||||
.all<Row>()
|
.all<Row>()
|
||||||
const byId = new Map(results.map(toDto).map((item) => [item.CustomAvatarItemId, item]))
|
const byId = new Map(results.map(toDto).map((item) => [item.CustomAvatarItemId, item]))
|
||||||
return ids.flatMap((id) => byId.get(id) ?? [])
|
return ids.flatMap((id) => byId.get(id) ?? [])
|
||||||
|
|||||||
@@ -926,10 +926,9 @@ export async function getEventById(db: D1Database, eventId: number): Promise<Pla
|
|||||||
*/
|
*/
|
||||||
export async function getEventsByIds(db: D1Database, ids: number[]): Promise<PlayerEvent[]> {
|
export async function getEventsByIds(db: D1Database, ids: number[]): Promise<PlayerEvent[]> {
|
||||||
if (ids.length === 0) return []
|
if (ids.length === 0) return []
|
||||||
const placeholders = ids.map((_, i) => `?${i + 1}`).join(', ')
|
|
||||||
const { results } = await db
|
const { results } = await db
|
||||||
.prepare(`SELECT data FROM event WHERE id IN (${placeholders})`)
|
.prepare(`SELECT data FROM event WHERE id IN (SELECT value FROM json_each(?1))`)
|
||||||
.bind(...ids)
|
.bind(JSON.stringify(ids))
|
||||||
.all<EventRow>()
|
.all<EventRow>()
|
||||||
const byId = new Map<number, PlayerEvent>()
|
const byId = new Map<number, PlayerEvent>()
|
||||||
for (const r of results) {
|
for (const r of results) {
|
||||||
@@ -1027,10 +1026,9 @@ export async function getPublicEventsByPlayer(
|
|||||||
*/
|
*/
|
||||||
export async function getEventsByClubs(db: D1Database, clubIds: number[]): Promise<PlayerEvent[]> {
|
export async function getEventsByClubs(db: D1Database, clubIds: number[]): Promise<PlayerEvent[]> {
|
||||||
if (clubIds.length === 0) return []
|
if (clubIds.length === 0) return []
|
||||||
const placeholders = clubIds.map((_, i) => `?${i + 1}`).join(', ')
|
|
||||||
const { results } = await db
|
const { results } = await db
|
||||||
.prepare(`SELECT data FROM event WHERE club_id IN (${placeholders})`)
|
.prepare(`SELECT data FROM event WHERE club_id IN (SELECT value FROM json_each(?1))`)
|
||||||
.bind(...clubIds)
|
.bind(JSON.stringify(clubIds))
|
||||||
.all<EventRow>()
|
.all<EventRow>()
|
||||||
return results.map((r) => JSON.parse(r.data) as PlayerEvent).sort(bySoonest)
|
return results.map((r) => JSON.parse(r.data) as PlayerEvent).sort(bySoonest)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user