fixed up data-service

This commit is contained in:
Boki 2025-06-18 20:11:05 -04:00
parent 68d977f9e0
commit 6b69bcbcaa
8 changed files with 135 additions and 535 deletions

View file

@ -1,72 +1,27 @@
/**
* Queue management routes
*/
import { Hono } from 'hono';
import { getLogger } from '@stock-bot/logger';
import { queueManager } from '../index';
const logger = getLogger('queue-routes');
const queue = new Hono();
export const queueRoutes = new Hono();
// Queue management endpoints
queueRoutes.get('/api/queue/status', async c => {
// Queue status endpoint
queue.get('/status', async c => {
try {
const stats = await queueManager.getStats();
return c.json({ status: 'success', data: stats });
// TODO: Implement queue management
return c.json({
status: 'success',
data: {
active: 0,
waiting: 0,
completed: 0,
failed: 0
},
message: 'Queue management will be implemented'
});
} catch (error) {
logger.error('Failed to get queue status', { error });
return c.json({ status: 'error', message: 'Failed to get queue status' }, 500);
}
});
queueRoutes.post('/api/queue/job', async c => {
try {
const { name, data, options } = await c.req.json();
const job = await queueManager.add(name, data, options);
return c.json({ status: 'success', jobId: job.id });
} catch (error) {
logger.error('Failed to add job', { error });
return c.json({ status: 'error', message: 'Failed to add job' }, 500);
}
});
// Provider registry endpoints
queueRoutes.get('/api/providers', async c => {
try {
const { providerRegistry } = await import('@stock-bot/queue');
const configs = providerRegistry.getProviderConfigs();
return c.json({ status: 'success', providers: configs });
} catch (error) {
logger.error('Failed to get providers', { error });
return c.json({ status: 'error', message: 'Failed to get providers' }, 500);
}
});
// Add new endpoint to see scheduled jobs
queueRoutes.get('/api/scheduled-jobs', async c => {
try {
const { providerRegistry } = await import('@stock-bot/queue');
const jobs = providerRegistry.getAllScheduledJobs();
return c.json({
status: 'success',
count: jobs.length,
jobs,
});
} catch (error) {
logger.error('Failed to get scheduled jobs info', { error });
return c.json({ status: 'error', message: 'Failed to get scheduled jobs' }, 500);
}
});
queueRoutes.post('/api/queue/clean', async c => {
try {
const { grace = 60000 } = await c.req.json(); // Default 1 minute
await queueManager.clean(grace);
const stats = await queueManager.getStats();
return c.json({ status: 'success', message: 'Queue cleaned', queueStats: stats });
} catch (error) {
logger.error('Failed to clean queue', { error });
return c.json({ status: 'error', message: 'Failed to clean queue' }, 500);
}
});
export { queue as queueRoutes };