// 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;