vk98's picture
Initial backend deployment - Hono proxy + ColPali embedding API
5dfbe50
import { Hono } from 'hono';
import { config } from '../config';
import { cache } from '../services/cache';
const fullImageApp = new Hono();
// Full image endpoint - matches Next.js /api/full-image
fullImageApp.get('/', async (c) => {
try {
const docId = c.req.query('docId');
if (!docId) {
return c.json({ error: 'docId is required' }, 400);
}
// Check cache
const cacheKey = `fullimage:${docId}`;
const cachedImage = cache.get<{ base64_image: string }>(cacheKey);
if (cachedImage) {
c.header('X-Cache', 'HIT');
return c.json(cachedImage);
}
// Proxy to backend
const imageUrl = `${config.backendUrl}/full_image?doc_id=${encodeURIComponent(docId)}`;
const response = await fetch(imageUrl);
if (!response.ok) {
throw new Error(`Backend returned ${response.status}`);
}
const data = await response.json();
// Cache for 24 hours
cache.set(cacheKey, data, 86400);
c.header('X-Cache', 'MISS');
return c.json(data);
} catch (error) {
console.error('Full image error:', error);
return c.json({
error: 'Failed to fetch image',
message: error instanceof Error ? error.message : 'Unknown error'
}, 500);
}
});
export { fullImageApp };