9af25927b7
- Add query-parser.ts with AST for type:, tag:, is:favorite, is:pinned filters - Integrate parser into search API - Add real-time search with 300ms debounce in search-bar - Add keyboard navigation (↑↓ Enter ESC) for Spotlight-like UX - Add dropdown results display with loading state - Add 22 tests for query parser Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19 lines
560 B
TypeScript
19 lines
560 B
TypeScript
import { NextRequest } from 'next/server'
|
|
import { searchNotes } from '@/lib/search'
|
|
import { parseQuery } from '@/lib/query-parser'
|
|
import { createErrorResponse, createSuccessResponse } from '@/lib/errors'
|
|
|
|
export async function GET(req: NextRequest) {
|
|
try {
|
|
const { searchParams } = new URL(req.url)
|
|
const q = searchParams.get('q') || ''
|
|
|
|
const queryAST = parseQuery(q)
|
|
const notes = await searchNotes(queryAST.text, queryAST.filters)
|
|
|
|
return createSuccessResponse(notes)
|
|
} catch (error) {
|
|
return createErrorResponse(error)
|
|
}
|
|
}
|