Skip to content

Commit 655b25b

Browse files
committed
sync
1 parent e5d13d9 commit 655b25b

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

  • packages/console/function/src

packages/console/function/src/stat.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js"
22
import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
33

4-
type Entry = { provider: string; model: string; tps: number }
5-
type Result = Record<string, { qualify: number; unqualify: number }>
4+
type Result = Record<string, Record<number, { qualify: number; unqualify: number }>>
65

76
export default {
87
async fetch(request: Request) {
98
if (request.method !== "POST") return new Response("Method Not Allowed", { status: 405 })
109

11-
const entries = (await request.json()) as Entry[]
12-
if (!Array.isArray(entries) || entries.length === 0) return Response.json({} satisfies Result)
10+
const body = (await request.json()) as { ids: string[] }
11+
const ids = body.ids
1312

14-
const ids = entries.map((e) => `${e.provider}/${e.model}/${e.tps}`)
13+
if (ids.length === 0) return Response.json({} satisfies Result)
1514

1615
const toInterval = (date: Date) =>
1716
parseInt(
@@ -21,19 +20,23 @@ export default {
2120
.substring(0, 12),
2221
)
2322
const now = Date.now()
24-
const intervals = Array.from({ length: 5 }, (_, i) => toInterval(new Date(now - i * 60 * 1000)))
23+
const intervals = Array.from({ length: 30 }, (_, i) => toInterval(new Date(now - i * 60 * 1000)))
2524

2625
const rows = await Database.use((tx) =>
2726
tx
2827
.select()
2928
.from(ModelTpsRateLimitTable)
30-
.where(and(inArray(ModelTpsRateLimitTable.id, ids), inArray(ModelTpsRateLimitTable.interval, intervals))),
29+
.where(and(inArray(ModelTpsRateLimitTable.id, body.ids), inArray(ModelTpsRateLimitTable.interval, intervals))),
3130
)
3231

33-
const result: Result = Object.fromEntries(ids.map((id) => [id, { qualify: 0, unqualify: 0 }]))
32+
const result: Result = Object.fromEntries(
33+
body.ids.map((id) => [
34+
id,
35+
Object.fromEntries(intervals.map((interval) => [interval, { qualify: 0, unqualify: 0 }])),
36+
]),
37+
)
3438
for (const row of rows) {
35-
result[row.id].qualify += row.qualify
36-
result[row.id].unqualify += row.unqualify
39+
result[row.id][row.interval] = { qualify: row.qualify, unqualify: row.unqualify }
3740
}
3841
return Response.json(result)
3942
},

0 commit comments

Comments
 (0)