71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
/**
|
|
* Queue management routes
|
|
*/
|
|
import { Hono } from 'hono';
|
|
import { getLogger } from '@stock-bot/logger';
|
|
import { queueManager } from '../services/queue.service';
|
|
|
|
const logger = getLogger('queue-routes');
|
|
|
|
export const queueRoutes = new Hono();
|
|
|
|
// Queue management endpoints
|
|
queueRoutes.get('/api/queue/status', async c => {
|
|
try {
|
|
const status = await queueManager.getQueueStatus();
|
|
return c.json({ status: 'success', data: status });
|
|
} 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 jobData = await c.req.json();
|
|
const job = await queueManager.addJob(jobData);
|
|
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('../services/provider-registry.service');
|
|
const providers = providerRegistry.getProviders();
|
|
return c.json({ status: 'success', providers });
|
|
} 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('../services/provider-registry.service');
|
|
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/drain', async c => {
|
|
try {
|
|
await queueManager.drainQueue();
|
|
const status = await queueManager.getQueueStatus();
|
|
return c.json({ status: 'success', message: 'Queue drained', queueStatus: status });
|
|
} catch (error) {
|
|
logger.error('Failed to drain queue', { error });
|
|
return c.json({ status: 'error', message: 'Failed to drain queue' }, 500);
|
|
}
|
|
});
|