This commit is contained in:
Frank
2026-05-13 15:58:34 -04:00
parent 9ee1f6ceba
commit c197fd92b7
+8 -8
View File
@@ -1,7 +1,7 @@
import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js" import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js"
import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js" import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
type Result = Record<string, Record<number, { qualify: number; unqualify: number }>> type Result = Record<string, { interval: number; qualify: number; unqualify: number }[]>
export default { export default {
async fetch(request: Request) { async fetch(request: Request) {
@@ -9,7 +9,6 @@ export default {
const body = (await request.json()) as { ids: string[] } const body = (await request.json()) as { ids: string[] }
const ids = body.ids const ids = body.ids
if (ids.length === 0) return Response.json({} satisfies Result) if (ids.length === 0) return Response.json({} satisfies Result)
const toInterval = (date: Date) => const toInterval = (date: Date) =>
@@ -26,18 +25,19 @@ export default {
tx tx
.select() .select()
.from(ModelTpsRateLimitTable) .from(ModelTpsRateLimitTable)
.where(and(inArray(ModelTpsRateLimitTable.id, body.ids), inArray(ModelTpsRateLimitTable.interval, intervals))), .where(and(inArray(ModelTpsRateLimitTable.id, ids), inArray(ModelTpsRateLimitTable.interval, intervals))),
) )
const rowsByKey = new Map(rows.map((row) => [`${row.id}:${row.interval}`, row]))
const result: Result = Object.fromEntries( const result: Result = Object.fromEntries(
body.ids.map((id) => [ ids.map((id) => [
id, id,
Object.fromEntries(intervals.map((interval) => [interval, { qualify: 0, unqualify: 0 }])), intervals.map((interval) => {
const row = rowsByKey.get(`${id}:${interval}`)
return { interval, qualify: row?.qualify ?? 0, unqualify: row?.unqualify ?? 0 }
}),
]), ]),
) )
for (const row of rows) {
result[row.id][row.interval] = { qualify: row.qualify, unqualify: row.unqualify }
}
return Response.json(result) return Response.json(result)
}, },
} }