添加更多的延迟选择
This commit is contained in:
@@ -842,24 +842,69 @@ app.get('*', (req, res, next) => {
|
||||
});
|
||||
|
||||
|
||||
// Get latency for A-B connection
|
||||
// ==================== Latency Routes CRUD ====================
|
||||
|
||||
app.get('/api/latency-routes', async (req, res) => {
|
||||
try {
|
||||
const [rows] = await db.query(`
|
||||
SELECT r.*, s.name as source_name
|
||||
FROM latency_routes r
|
||||
LEFT JOIN prometheus_sources s ON r.source_id = s.id
|
||||
ORDER BY r.created_at DESC
|
||||
`);
|
||||
res.json(rows);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Failed to fetch latency routes' });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/latency-routes', requireAuth, async (req, res) => {
|
||||
const { source_id, latency_source, latency_dest, latency_target } = req.body;
|
||||
try {
|
||||
await db.query('INSERT INTO latency_routes (source_id, latency_source, latency_dest, latency_target) VALUES (?, ?, ?, ?)', [source_id, latency_source, latency_dest, latency_target]);
|
||||
res.json({ success: true });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Failed to add latency route' });
|
||||
}
|
||||
});
|
||||
|
||||
app.delete('/api/latency-routes/:id', requireAuth, async (req, res) => {
|
||||
try {
|
||||
await db.query('DELETE FROM latency_routes WHERE id = ?', [req.params.id]);
|
||||
res.json({ success: true });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Failed to delete latency route' });
|
||||
}
|
||||
});
|
||||
|
||||
// ==================== Metrics Latency ====================
|
||||
|
||||
app.get('/api/metrics/latency', async (req, res) => {
|
||||
try {
|
||||
const [settings] = await db.query('SELECT blackbox_source_id, latency_target FROM site_settings WHERE id = 1');
|
||||
if (settings.length === 0 || !settings[0].blackbox_source_id || !settings[0].latency_target) {
|
||||
return res.json({ latency: null });
|
||||
}
|
||||
const [routes] = await db.query(`
|
||||
SELECT r.*, s.url
|
||||
FROM latency_routes r
|
||||
JOIN prometheus_sources s ON r.source_id = s.id
|
||||
`);
|
||||
|
||||
// Lookup source URL from the source ID
|
||||
const [sources] = await db.query('SELECT url FROM prometheus_sources WHERE id = ?', [settings[0].blackbox_source_id]);
|
||||
if (sources.length === 0) {
|
||||
return res.json({ latency: null });
|
||||
if (routes.length === 0) {
|
||||
// Return empty routes array instead of null for consistency
|
||||
return res.json({ routes: [] });
|
||||
}
|
||||
|
||||
const latency = await prometheusService.getLatency(sources[0].url, settings[0].latency_target);
|
||||
res.json({ latency });
|
||||
const results = await Promise.all(routes.map(async (route) => {
|
||||
const latency = await prometheusService.getLatency(route.url, route.latency_target);
|
||||
return {
|
||||
id: route.id,
|
||||
source: route.latency_source,
|
||||
dest: route.latency_dest,
|
||||
latency: latency
|
||||
};
|
||||
}));
|
||||
|
||||
res.json({ routes: results });
|
||||
} catch (err) {
|
||||
console.error('Error fetching latency:', err);
|
||||
console.error('Error fetching latencies:', err);
|
||||
res.status(500).json({ error: 'Failed to fetch latency' });
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user