45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
const db = require('../../db.js');
|
|
const storageManager = require('../data/storageManager.js');
|
|
const fs = require('fs');
|
|
|
|
let localCounter = 0;
|
|
|
|
async function checkAndRemoveInvalidEntries() {
|
|
localCounter = 0;
|
|
try {
|
|
const measurementsRes = await db.query('SELECT id, path FROM measurements');
|
|
for (const row of measurementsRes.rows) {
|
|
if (!fs.existsSync(row.path)) {
|
|
await db.query('DELETE FROM measurements WHERE id = $1', [row.id]);
|
|
console.log(`Deleted invalid measurement entry with id: ${row.id}`);
|
|
localCounter++;
|
|
}
|
|
}
|
|
|
|
// Scan all images in storage
|
|
const allImages = await storageManager.scanAllImages();
|
|
//console.log('Scanned all images:', allImages);
|
|
for (const imagePath of allImages) {
|
|
const entryRes = await db.query('SELECT id FROM measurements WHERE path = $1', [imagePath]);
|
|
if (entryRes.rows.length === 0) {
|
|
fs.unlinkSync(imagePath);
|
|
console.log(`Deleted file at path: ${imagePath} as its database entry does not exist`);
|
|
localCounter++;
|
|
}
|
|
}
|
|
if (localCounter > 0) {
|
|
console.log(`[INFO] ${localCounter} entrées ont été modifiées`);
|
|
}
|
|
} catch (err) {
|
|
console.error('Error checking and removing invalid entries:', err);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Run the check periodically
|
|
console.log('[INFO] Activation du FileWatcher pour surveiller les fichiers invalides...')
|
|
setInterval(checkAndRemoveInvalidEntries, 10000); // Every 10 seconds
|
|
|
|
// Initial run
|
|
checkAndRemoveInvalidEntries(); |