initial setup, its a mess

This commit is contained in:
Bojan Kucera 2025-06-08 14:49:52 -04:00
parent 811fc86c92
commit f9c2860ff4
8 changed files with 723 additions and 622 deletions

View file

@ -6,8 +6,6 @@ import { loadEnvVariables } from '@stock-bot/config';
import { Hono } from 'hono';
import { serve } from '@hono/node-server';
import { queueManager } from './services/queue.service';
import { proxyService } from './services/proxy.service';
import { marketDataProvider } from './providers/market-data.provider';
// Load environment variables
loadEnvVariables();
@ -56,12 +54,23 @@ app.get('/api/live/:symbol', async (c) => {
const symbol = c.req.param('symbol');
logger.info('Live data request', { symbol });
try {
const data = await marketDataProvider.getLiveData(symbol);
return c.json({ status: 'success', symbol, data });
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 get live data', { symbol, error });
return c.json({ status: 'error', message: 'Failed to get live data' }, 500);
logger.error('Failed to queue live data job', { symbol, error });
return c.json({ status: 'error', message: 'Failed to queue live data job' }, 500);
}
});
@ -75,20 +84,47 @@ app.get('/api/historical/:symbol', async (c) => {
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
const data = await marketDataProvider.getHistoricalData(symbol, fromDate, toDate);
return c.json({ status: 'success', symbol, from, to, data });
// 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 get historical data', { symbol, from, to, error });
return c.json({ status: 'error', message: 'Failed to get historical data' }, 500);
}
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); }
});
// Proxy management endpoints
app.post('/api/proxy/fetch', async (c) => {
try {
const jobId = await proxyService.queueProxyFetch();
return c.json({ status: 'success', jobId, message: 'Proxy fetch job queued' });
const job = await queueManager.addJob({
type: 'proxy-fetch',
service: 'proxy',
provider: 'proxy-service',
operation: 'fetch-and-check',
payload: {},
priority: 5
});
return c.json({
status: 'success',
jobId: job.id,
message: 'Proxy fetch job queued'
});
} catch (error) {
logger.error('Failed to queue proxy fetch', { error });
return c.json({ status: 'error', message: 'Failed to queue proxy fetch' }, 500);
@ -98,14 +134,49 @@ app.post('/api/proxy/fetch', async (c) => {
app.post('/api/proxy/check', async (c) => {
try {
const { proxies } = await c.req.json();
const jobId = await proxyService.queueProxyCheck(proxies);
return c.json({ status: 'success', jobId, message: 'Proxy check job queued' });
const job = await queueManager.addJob({
type: 'proxy-check',
service: 'proxy',
provider: 'proxy-service',
operation: 'check-specific',
payload: { proxies },
priority: 8
});
return c.json({
status: 'success',
jobId: job.id,
message: `Proxy check job queued for ${proxies.length} proxies`
});
} catch (error) {
logger.error('Failed to queue proxy check', { error });
return c.json({ status: 'error', message: 'Failed to queue proxy check' }, 500);
}
});
// Get proxy stats via queue
app.get('/api/proxy/stats', async (c) => {
try {
const job = await queueManager.addJob({
type: 'proxy-stats',
service: 'proxy',
provider: 'proxy-service',
operation: 'get-stats',
payload: {},
priority: 3
});
return c.json({
status: 'success',
jobId: job.id,
message: 'Proxy stats job queued'
});
} catch (error) {
logger.error('Failed to queue proxy stats', { error });
return c.json({ status: 'error', message: 'Failed to queue proxy stats' }, 500);
}
});
// Provider registry endpoints
app.get('/api/providers', async (c) => {
try {