photo_server_json_flutter_c.../api_v1/scanner/deleteFolder.js

55 lines
1.4 KiB
JavaScript

// api_v1/scanner/deleteFolder.js
const path = require('path');
const fsp = require('fs/promises');
const { WEB_ROOT } = require('../config');
module.exports = function createDeleteFolderFunctions(db) {
const createCleanupFunctions = require('./orphanCleanup');
const { deleteFromDB } = createCleanupFunctions(db);
const recordChange = require('./recordChange');
/**
* Cancella una cartella per un utente:
* - elimina tutti i record DB
* - registra removed
* - elimina la cartella thumbs residua
*/
async function deleteFolderForUser(userName, folderName) {
// 1) Recupera tutti gli ID nel DB
const rows = await db('photos')
.where({ user: userName, cartella: folderName })
.select('id');
// 2) Cancella record DB + registra removed
for (const r of rows) {
const id = r.id;
await deleteFromDB(id, userName);
await recordChange(db, id, userName, "removed");
}
// 3) Cancella la cartella thumbs residua
const thumbsDir = path.join(
WEB_ROOT,
userName,
"thumbs",
folderName
);
try {
await fsp.rm(thumbsDir, { recursive: true, force: true });
console.log(`🧹 Rimossa cartella thumbs residua: ${thumbsDir}`);
} catch (err) {
console.log(`⚠️ Errore rimozione thumbs dir: ${thumbsDir}`, err);
}
return {
removedRecords: rows.length,
removedThumbsDir: thumbsDir
};
}
return { deleteFolderForUser };
};