Download src/server/api/search.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 2.32 kB
-
https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/server/api/search.ts
- Command line
-
hf download hf://chenbhao/codev@afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/server/api/search.ts
-
curl -L -o search.ts https://huggingface.co/chenbhao/codev/resolve/afbc7edaae4e6bb0102ba024b49ce8be89d2264c/src/server/api/search.ts
2.32 kB
| /** | |
| * Search REST API | |
| * | |
| * POST /api/search β ε ¨ε±ε·₯δ½εΊζη΄’ | |
| * POST /api/search/sessions β ζη΄’δΌθ―εε² | |
| */ | |
| import { SearchService } from '../services/searchService.js' | |
| import { ApiError, errorResponse } from '../middleware/errorHandler.js' | |
| const searchService = new SearchService() | |
| export async function handleSearchApi( | |
| req: Request, | |
| _url: URL, | |
| segments: string[], | |
| ): Promise<Response> { | |
| try { | |
| const method = req.method | |
| const sub = segments[2] // 'sessions' | undefined | |
| if (method !== 'POST') { | |
| throw new ApiError( | |
| 405, | |
| `Method ${method} not allowed. Use POST.`, | |
| 'METHOD_NOT_ALLOWED', | |
| ) | |
| } | |
| const body = await parseJsonBody(req) | |
| const query = body.query as string | |
| if (!query || typeof query !== 'string') { | |
| throw ApiError.badRequest('Missing or invalid "query" in request body') | |
| } | |
| // ββ POST /api/search/sessions ββββββββββββββββββββββββββββββββββββββββββ | |
| if (sub === 'sessions') { | |
| const results = await searchService.searchSessions(query) | |
| return Response.json({ results }) | |
| } | |
| // ββ POST /api/search βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| if (!sub) { | |
| const results = await searchService.searchWorkspace(query, { | |
| cwd: body.cwd as string | undefined, | |
| maxResults: body.maxResults as number | undefined, | |
| glob: body.glob as string | undefined, | |
| caseSensitive: body.caseSensitive as boolean | undefined, | |
| }) | |
| return Response.json({ results, total: results.length }) | |
| } | |
| throw ApiError.notFound(`Unknown search endpoint: ${sub}`) | |
| } catch (error) { | |
| return errorResponse(error) | |
| } | |
| } | |
| // βββ Helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| async function parseJsonBody(req: Request): Promise<Record<string, unknown>> { | |
| try { | |
| return (await req.json()) as Record<string, unknown> | |
| } catch { | |
| throw ApiError.badRequest('Invalid JSON body') | |
| } | |
| } | |