fix: search API FTS join and error handling
Fixed 500 Internal Server Error in search API by correcting the FTS5 full-text search query join. The previous query incorrectly joined fts.rowid directly to repositories.id, but FTS rowid corresponds to the readmes table. Now properly joins through readmes table first. Also enhanced error logging with detailed error messages in development mode for easier debugging. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -40,8 +40,14 @@ export async function GET(request: NextRequest) {
|
||||
return NextResponse.json(results)
|
||||
} catch (error) {
|
||||
console.error('Search API error:', error)
|
||||
const errorMessage = error instanceof Error ? error.message : 'Unknown error'
|
||||
console.error('Error details:', errorMessage)
|
||||
|
||||
return NextResponse.json(
|
||||
{ error: 'Internal server error' },
|
||||
{
|
||||
error: 'Internal server error',
|
||||
...(process.env.NODE_ENV === 'development' && { details: errorMessage })
|
||||
},
|
||||
{ status: 500 }
|
||||
)
|
||||
}
|
||||
|
||||
@@ -128,7 +128,8 @@ export function searchRepositories(options: SearchOptions): PaginatedResults<Sea
|
||||
fts.rank,
|
||||
snippet(readmes_fts, 2, '<mark>', '</mark>', '...', 32) as snippet
|
||||
FROM readmes_fts fts
|
||||
JOIN repositories r ON fts.rowid = r.id
|
||||
JOIN readmes rm ON fts.rowid = rm.rowid
|
||||
JOIN repositories r ON rm.repository_id = r.id
|
||||
LEFT JOIN awesome_lists al ON r.awesome_list_id = al.id
|
||||
WHERE readmes_fts MATCH ?
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user