修改请求数据库方式
This commit is contained in:
@@ -314,9 +314,6 @@ app.post('/api/sources', requireAuth, async (req, res) => {
|
||||
);
|
||||
const [rows] = await db.query('SELECT * FROM prometheus_sources WHERE id = ?', [result.insertId]);
|
||||
|
||||
// Trigger history preloading in background
|
||||
setImmediate(() => preloadSourceHistory(url));
|
||||
|
||||
res.status(201).json(rows[0]);
|
||||
} catch (err) {
|
||||
console.error('Error adding source:', err);
|
||||
@@ -560,47 +557,6 @@ app.get('*', (req, res) => {
|
||||
res.sendFile(path.join(__dirname, '..', 'public', 'index.html'));
|
||||
});
|
||||
|
||||
// Preload history for all existing sources if table is empty
|
||||
async function initialPreload() {
|
||||
if (!isDbInitialized) return;
|
||||
try {
|
||||
const [stats] = await db.query('SELECT COUNT(*) as count FROM traffic_stats');
|
||||
if (stats[0].count === 0) {
|
||||
console.log('[Initial Preloader] Database empty, preloading history for all sources...');
|
||||
const [sources] = await db.query('SELECT * FROM prometheus_sources');
|
||||
for (const source of sources) {
|
||||
await preloadSourceHistory(source.url);
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('[Initial Preloader] Error:', err);
|
||||
}
|
||||
}
|
||||
|
||||
// Preload history for a new source
|
||||
async function preloadSourceHistory(url) {
|
||||
if (!isDbInitialized) return;
|
||||
console.log(`[History Preloader] Starting preloading for ${url}...`);
|
||||
try {
|
||||
const history = await prometheusService.getTrafficHistoryRange(url);
|
||||
if (!history || history.length === 0) return;
|
||||
|
||||
for (const p of history) {
|
||||
await db.query(`
|
||||
INSERT INTO traffic_stats (timestamp, rx_bytes, tx_bytes, rx_bandwidth, tx_bandwidth)
|
||||
VALUES (FROM_UNIXTIME(?), ?, ?, ?, ?)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
rx_bytes = rx_bytes + VALUES(rx_bytes),
|
||||
tx_bytes = tx_bytes + VALUES(tx_bytes),
|
||||
rx_bandwidth = rx_bandwidth + VALUES(rx_bandwidth),
|
||||
tx_bandwidth = tx_bandwidth + VALUES(tx_bandwidth)
|
||||
`, [p.ts, Math.round(p.rxBytes), Math.round(p.txBytes), p.rxBW, p.txBW]);
|
||||
}
|
||||
console.log(`[History Preloader] Successfully preloaded ${history.length} points for ${url}.`);
|
||||
} catch (err) {
|
||||
console.error(`[History Preloader] Error preloading ${url}:`, err.message);
|
||||
}
|
||||
}
|
||||
|
||||
async function recordTrafficStats() {
|
||||
if (!isDbInitialized) return;
|
||||
@@ -655,9 +611,7 @@ async function recordTrafficStats() {
|
||||
}
|
||||
|
||||
// Check and fix database integrity on startup
|
||||
checkAndFixDatabase().then(() => {
|
||||
initialPreload();
|
||||
});
|
||||
checkAndFixDatabase();
|
||||
|
||||
// Record traffic every 5 seconds (17,280 points/day)
|
||||
setInterval(recordTrafficStats, 5 * 1000);
|
||||
|
||||
Reference in New Issue
Block a user