Spaces:
Sleeping
Sleeping
Download src/app/api/examples/route.ts from samuellimabraz/quantum-assistant: direct link, hf CLI and curl.
- Browser
- Download file 2.96 kB
-
https://huggingface.co/spaces/samuellimabraz/quantum-assistant/resolve/main/src/app/api/examples/route.ts
- Command line
-
hf download hf://spaces/samuellimabraz/quantum-assistant/src/app/api/examples/route.ts
-
curl -L -o route.ts https://huggingface.co/spaces/samuellimabraz/quantum-assistant/resolve/main/src/app/api/examples/route.ts
2.96 kB
| import { NextRequest, NextResponse } from 'next/server'; | |
| import { datasetLoader } from '@/lib/dataset/loader'; | |
| import type { TaskType, Category } from '@/types'; | |
| // Server-side loader for API route (used for split info and fallback) | |
| export async function GET(request: NextRequest) { | |
| try { | |
| const { searchParams } = new URL(request.url); | |
| const split = (searchParams.get('split') as 'train' | 'validation' | 'test') || 'test'; | |
| const limit = Math.min(parseInt(searchParams.get('limit') || '50', 10), 100); | |
| const offset = parseInt(searchParams.get('offset') || '0', 10); | |
| const type = searchParams.get('type') as TaskType | null; | |
| const category = searchParams.get('category') as Category | null; | |
| const hasImage = searchParams.get('hasImage'); | |
| const search = searchParams.get('search') || undefined; | |
| const codingOnly = searchParams.get('codingOnly') === 'true'; | |
| // Ensure the split is loaded | |
| if (!datasetLoader.isLoaded(split)) { | |
| await datasetLoader.preloadSplit(split); | |
| } | |
| // Build filters | |
| const filters: { | |
| type?: TaskType; | |
| category?: Category; | |
| hasImage?: boolean; | |
| search?: string; | |
| codingOnly?: boolean; | |
| } = { codingOnly }; | |
| if (type) filters.type = type; | |
| if (category) filters.category = category; | |
| if (hasImage !== null) filters.hasImage = hasImage === 'true'; | |
| if (search) filters.search = search; | |
| const result = datasetLoader.filterExamples(split, filters, limit, offset); | |
| return NextResponse.json({ | |
| examples: result.examples, | |
| total: result.total, | |
| split, | |
| offset, | |
| limit, | |
| hasMore: offset + result.examples.length < result.total, | |
| }); | |
| } catch (error) { | |
| console.error('Examples API error:', error); | |
| const errorMessage = | |
| error instanceof Error ? error.message : 'Failed to load examples'; | |
| return NextResponse.json( | |
| { error: errorMessage, examples: [], total: 0 }, | |
| { status: 500 } | |
| ); | |
| } | |
| } | |
| // Endpoint to get split info | |
| export async function POST(request: NextRequest) { | |
| try { | |
| const body = await request.json(); | |
| if (body.action === 'getSplitInfo') { | |
| const splitInfo = await datasetLoader.getSplitInfo(); | |
| return NextResponse.json({ splitInfo }); | |
| } | |
| if (body.action === 'getCodingCount') { | |
| const split = (body.split || 'test') as 'train' | 'validation' | 'test'; | |
| // Ensure the split is loaded | |
| if (!datasetLoader.isLoaded(split)) { | |
| await datasetLoader.preloadSplit(split); | |
| } | |
| const codingProblems = datasetLoader.getCodingProblems(split); | |
| return NextResponse.json({ count: codingProblems.length, split }); | |
| } | |
| return NextResponse.json({ error: 'Unknown action' }, { status: 400 }); | |
| } catch (error) { | |
| console.error('Examples API POST error:', error); | |
| return NextResponse.json( | |
| { error: 'Failed to process request' }, | |
| { status: 500 } | |
| ); | |
| } | |
| } | |