62 lines
1.6 KiB
JavaScript
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;
|