/** * Market data routes */ import { Hono } from 'hono'; import { getLogger } from '@stock-bot/logger'; import { queueManager } from '../services/queue.service'; const logger = getLogger('market-data-routes'); export const marketDataRoutes = new Hono(); // Market data endpoints marketDataRoutes.get('/api/live/:symbol', async (c) => { const symbol = c.req.param('symbol'); logger.info('Live data request', { symbol }); try { // Queue job for live data using Yahoo provider const job = await queueManager.addJob({ type: 'market-data-live', service: 'market-data', provider: 'yahoo-finance', operation: 'live-data', payload: { symbol } }); return c.json({ status: 'success', message: 'Live data job queued', jobId: job.id, symbol }); } catch (error) { logger.error('Failed to queue live data job', { symbol, error }); return c.json({ status: 'error', message: 'Failed to queue live data job' }, 500); } }); marketDataRoutes.get('/api/historical/:symbol', async (c) => { const symbol = c.req.param('symbol'); const from = c.req.query('from'); const to = c.req.query('to'); logger.info('Historical data request', { symbol, from, to }); try { const fromDate = from ? new Date(from) : new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days ago const toDate = to ? new Date(to) : new Date(); // Now // Queue job for historical data using Yahoo provider const job = await queueManager.addJob({ type: 'market-data-historical', service: 'market-data', provider: 'yahoo-finance', operation: 'historical-data', payload: { symbol, from: fromDate.toISOString(), to: toDate.toISOString() } }); return c.json({ status: 'success', message: 'Historical data job queued', jobId: job.id, symbol, from: fromDate, to: toDate }); } catch (error) { logger.error('Failed to queue historical data job', { symbol, from, to, error }); return c.json({ status: 'error', message: 'Failed to queue historical data job' }, 500); } });