server_photo_s85js/api_v1/scanner/scanActivityCartella.js
2026-08-11 08:45:04 +02:00

62 lines
1.6 KiB
JavaScript

// api_v1/scanner/scanActivityCartella.js
const scanActivityFiles = require('./scanActivityFiles');
const scanActivitySingle = require('./scanActivitySingle'); // 🔥 da creare
const { log } = require('./logger');
async function scanActivityCartella(
db,
user,
cartella,
absCartella,
newActivities,
updateStatusFile,
CURRENT,
TOTAL_FILES,
start,
deleteThumbsById,
deleteFromDB,
onProgress
) {
log(`📁 [SCAN ACTIVITY CARTELLA] ${cartella}`);
// Recupera gli ID già presenti nel DB
const rows = await db('activities')
.where({ user, cartella })
.select('id');
const idsSet = new Set(rows.map(r => r.id));
// Scansiona i file della cartella
for await (const f of scanActivityFiles(user, cartella, absCartella, db)) {
// Aggiorna il contatore
CURRENT.value++;
// Aggiorna stato avanzamento (vecchio sistema)
await updateStatusFile(CURRENT, TOTAL_FILES, start);
// Aggiorna stato avanzamento (nuovo sistema)
if (onProgress) {
await onProgress();
}
// Processa il file FIT/GPX/TCX
const meta = await scanActivitySingle(db, user, cartella, f, newActivities);
log("📌 [DEBUG] meta:", JSON.stringify(meta, null, 2));
log("📌 [DEBUG] newActivities:", JSON.stringify(newActivities, null, 2));
// Anche se identico, NON è orfano
idsSet.delete(f.id);
}
// Gestione orfani
for (const orphanId of idsSet) {
log(`🔴 [ORPHAN ACTIVITY] ${orphanId}`);
await deleteThumbsById(orphanId);
await deleteFromDB(orphanId, user);
}
}
module.exports = scanActivityCartella;