const fs = require('fs-extra'); const path = require('path'); module.exports = Self => { Self.remoteMethod('deleteTrashFiles', { description: 'Deletes files that have trash type', accessType: 'WRITE', returns: { type: 'object', root: true }, http: { path: `/deleteTrashFiles`, verb: 'POST' } }); Self.deleteTrashFiles = async(options) => { const tx = await Self.beginTransaction({}); const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); if (!myOptions.transaction) myOptions.transaction = tx; try { const models = Self.app.models; const DmsContainer = models.DmsContainer; const trashDmsType = await models.DmsType.findOne({ where: {code: 'trash'} }, myOptions); const dmsToDelete = await models.Dms.find({ where: { dmsTypeFk: trashDmsType.id } }, myOptions); for (let dms of dmsToDelete) { const pathHash = DmsContainer.getHash(dms.id); const dmsContainer = await DmsContainer.container(pathHash); const dstFile = path.join(dmsContainer.client.root, pathHash, dms.file); await fs.unlink(dstFile); await dms.destroy(myOptions); } if (tx) await tx.commit(); } catch (e) { if (tx) await tx.rollback(); throw e; } }; };