Spaces:
Running
Running
import { Hono } from 'hono'; | |
import { cache } from '../services/cache'; | |
const querySuggestionsApp = new Hono(); | |
// Static suggestions for now (can be replaced with Vespa query later) | |
const staticSuggestions = [ | |
'linqto bankruptcy', | |
'linqto filing date', | |
'linqto creditors', | |
'linqto assets', | |
'linqto liabilities', | |
'linqto chapter 11', | |
'linqto docket', | |
'linqto plan', | |
'linqto disclosure statement', | |
'linqto claims', | |
]; | |
// Query suggestions endpoint | |
querySuggestionsApp.get('/', async (c) => { | |
try { | |
const query = c.req.query('query'); | |
if (!query) { | |
return c.json({ suggestions: [] }); | |
} | |
// Check cache | |
const cacheKey = `suggestions:${query}`; | |
const cachedSuggestions = cache.get(cacheKey); | |
if (cachedSuggestions) { | |
c.header('X-Cache', 'HIT'); | |
return c.json(cachedSuggestions); | |
} | |
// Filter static suggestions based on query | |
const lowerQuery = query.toLowerCase(); | |
const filteredSuggestions = staticSuggestions | |
.filter(s => s.toLowerCase().includes(lowerQuery)) | |
.slice(0, 5); | |
const result = { suggestions: filteredSuggestions }; | |
// Cache for 5 minutes | |
cache.set(cacheKey, result, 300); | |
c.header('X-Cache', 'MISS'); | |
return c.json(result); | |
} catch (error) { | |
console.error('Suggestions error:', error); | |
return c.json({ | |
error: 'Failed to fetch suggestions', | |
suggestions: [] | |
}, 500); | |
} | |
}); | |
export { querySuggestionsApp }; | |