import { NextResponse } from "next/server"; import { getRequestDetails } from "@/lib/requestDetailsDb"; import { getProviderNodes } from "@/lib/localDb"; import { AI_PROVIDERS, getProviderByAlias } from "@/shared/constants/providers"; /** * GET /api/usage/providers * Returns list of unique providers from request details */ export async function GET() { try { const { details } = await getRequestDetails({ pageSize: 9999 }); // Extract unique providers const providerIds = [...new Set(details.map(r => r.provider).filter(Boolean))].sort(); const providerNodes = await getProviderNodes(); const nodeMap = {}; for (const node of providerNodes) { nodeMap[node.id] = node.name; } const providers = providerIds.map(providerId => { let name = providerId; if (nodeMap[providerId]) { name = nodeMap[providerId]; } else { const providerConfig = getProviderByAlias(providerId) || AI_PROVIDERS[providerId]; if (providerConfig?.name) name = providerConfig.name; } return { id: providerId, name }; }); return NextResponse.json({ providers }); } catch (error) { console.error("[API] Failed to get providers:", error); return NextResponse.json( { error: "Failed to fetch providers" }, { status: 500 } ); } }