feat(api): add all REST route handlers and display-api test (Task 12)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import { Router } from 'express';
|
||||
import {
|
||||
getTopicsForBroker,
|
||||
updateTopic,
|
||||
startDiscovery,
|
||||
addManualTopic,
|
||||
} from '../../modules/mqtt/topic-discovery';
|
||||
|
||||
const router = Router({ mergeParams: true });
|
||||
|
||||
// GET /api/mqtt/brokers/:brokerId/topics
|
||||
router.get('/', (req, res): void => {
|
||||
try {
|
||||
const brokerId = parseInt(req.params.brokerId);
|
||||
res.json(getTopicsForBroker(brokerId));
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: (err as Error).message });
|
||||
}
|
||||
});
|
||||
|
||||
// PUT /api/mqtt/brokers/:brokerId/topics/:id
|
||||
router.put('/:id', (req, res): void => {
|
||||
try {
|
||||
const topic = updateTopic(parseInt(req.params.id), req.body);
|
||||
if (!topic) { res.status(404).json({ error: 'Topic not found' }); return; }
|
||||
res.json(topic);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: (err as Error).message });
|
||||
}
|
||||
});
|
||||
|
||||
// POST /api/mqtt/brokers/:brokerId/topics/discover
|
||||
router.post('/discover', (req, res): void => {
|
||||
const brokerId = parseInt(req.params.brokerId);
|
||||
const { prefix } = req.body;
|
||||
|
||||
res.json({ message: 'Discovery started', brokerId, prefix: prefix ?? null });
|
||||
|
||||
// Run in background
|
||||
startDiscovery(brokerId, prefix).catch((err) => {
|
||||
console.error('Discovery error:', (err as Error).message);
|
||||
});
|
||||
});
|
||||
|
||||
// POST /api/mqtt/brokers/:brokerId/topics/manual
|
||||
router.post('/manual', (req, res): void => {
|
||||
try {
|
||||
const brokerId = parseInt(req.params.brokerId);
|
||||
const { topic } = req.body;
|
||||
if (!topic) { res.status(400).json({ error: 'topic is required' }); return; }
|
||||
res.status(201).json(addManualTopic(brokerId, topic));
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: (err as Error).message });
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user