import { and, Database, inArray } from "@opencode-ai/console-core/drizzle/index.js"import { ModelTpsRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"type Result = Record<string, { interval: number; qualify: number; unqualify: number }[]>export default {async fetch(request: Request) {if (request.method !== "POST") return new Response("Method Not Allowed", { status: 405 })const body = (await request.json()) as { ids: string[] }const ids = body.idsif (ids.length === 0) return Response.json({} satisfies Result)const toInterval = (date: Date) =>parseInt(date.toISOString().replace(/[^0-9]/g, "").substring(0, 12),)const now = Date.now()const intervals = Array.from({ length: 30 }, (_, i) => toInterval(new Date(now - i * 60 * 1000)))const rows = await Database.use((tx) =>tx.select().from(ModelTpsRateLimitTable).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(ids.map((id) => [id,intervals.map((interval) => {const row = rowsByKey.get(`${id}:${interval}`)return { interval, qualify: row?.qualify ?? 0, unqualify: row?.unqualify ?? 0 }}),]),)return Response.json(result)},}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。