import { NextRequest, NextResponse } from "next/server"; import { jsonError, parseOptionalInt, parsePositiveInt, parseTimestampRange } from "@/lib/api-params"; import { getLogs } from "@/lib/queries"; export async function GET(req: NextRequest) { try { const sp = req.nextUrl.searchParams; const range = parseTimestampRange(sp); if (!range.ok) return jsonError(range.field); const page = parsePositiveInt(sp.get("page"), { field: "page", defaultValue: 1, min: 1, }); if (!page.ok) return jsonError(page.field); const pageSize = parsePositiveInt(sp.get("page_size"), { field: "page_size", defaultValue: 100, min: 1, max: 200, }); if (!pageSize.ok) return jsonError(pageSize.field); const channelId = parseOptionalInt(sp.get("channel_id"), "channel_id"); if (!channelId.ok) return jsonError(channelId.field); if (channelId.value === 0) return jsonError("channel_id"); const data = await getLogs({ page: page.value, pageSize: pageSize.value, startTs: range.value.startTs, endTs: range.value.endTs, username: sp.get("username") || undefined, model: sp.get("model") || undefined, channelId: channelId.value, tokenName: sp.get("token_name") || undefined, }); return NextResponse.json(data); } catch (error) { console.error("Failed to load logs", error); return jsonError(undefined, 500); } }