add delete download

master
Lucas 2 years ago
parent e99c8ded67
commit 6adde976d5
  1. 2
      package.json
  2. 77
      src/api/controllers/v1/path.controller.js
  3. 19
      src/api/routes/v1/path.route.js

@ -47,6 +47,7 @@
},
"dependencies": {
"amqplib": "^0.5.2",
"archiver": "^5.3.1",
"auth-adapter": "1.1.0",
"axios": "^0.18.0",
"bcryptjs": "^2.4.3",
@ -88,6 +89,7 @@
"xlsx": "^0.16.9"
},
"devDependencies": {
"@types/archiver": "^5.3.2",
"babel-cli": "^6.26.0",
"babel-plugin-istanbul": "^4.1.6",
"babel-preset-env": "^1.6.1",

@ -1,5 +1,7 @@
/* eslint-disable import/no-extraneous-dependencies */
// import httpStatus from 'http-status';
import fs from 'fs';
import archiver from 'archiver';
import multer from 'multer';
import { handler as ErrorHandel } from '../../middlewares/errors';
// import ApiException from '../../../common/utils/APIException';
@ -102,7 +104,6 @@ exports.delete = (req, res, next) => {
multer({ dest: `${dir}` });
const path = req.body.path.replace(cdnConfig.uri, storageConfig.uri);
const newpath = req.body.path.replace(cdnConfig.uri, storageConfig.uri_backup);
console.log(path, newpath);
// fs.rm(path, { recursive: true }, err => {
// if (err) {
// return res.status(400).json({ code: 400, message: 'lỗi', detail: err });
@ -118,3 +119,77 @@ exports.delete = (req, res, next) => {
return ErrorHandel(ex, req, res, next);
}
};
exports.download = (req, res, next) => {
try {
const user = req.user;
const namefile = `${user.name}-${Date.now()}.zip`;
const dir = `${storageConfig.uri}/${user.id}/${namefile}`;
const output = fs.createWriteStream(dir);
const archive = archiver('zip', {
zlib: { level: 9 } // Sets the compression level.
});
archive.pipe(output);
if (req.body.data) {
req.body.data.forEach((e) => {
const path = e.path.replace(cdnConfig.uri, storageConfig.uri);
if (e.isFolder) {
archive.directory(path, e.name);
} else {
archive.file(path, { name: e.name });
}
});
}
archive.finalize();
return res.json({
code: 0,
data: {
name: namefile,
path: `${cdnConfig.uri}/${user.id}/${namefile}`,
}
});
} catch (ex) {
return ErrorHandel(ex, req, res, next);
}
};
exports.forceDelete = (req, res, next) => {
try {
const path = req.body.path.replace(cdnConfig.uri, storageConfig.uri);
// const newpath = req.body.path.replace(cdnConfig.uri, storageConfig.uri_backup);
fs.rm(path, { recursive: true }, err => {
if (err) {
return res.status(400).json({ code: 400, message: 'lỗi', detail: err });
}
return res.json({ code: 0, message: 'success' });
});
return null;
} catch (ex) {
return ErrorHandel(ex, req, res, next);
}
};
exports.deleteMultiple = (req, res, next) => {
try {
const user = req.user;
const dir = `${storageConfig.uri_backup}/${user.id}`;
multer({ dest: `${dir}` });
if (req.body.data) {
req.body.data.forEach((e) => {
const path = e.path.replace(cdnConfig.uri, storageConfig.uri);
const newpath = e.path.replace(cdnConfig.uri, storageConfig.uri_backup);
console.log(path, newpath);
fs.rename(path, newpath, (err) => {
if (err) throw err;
return { code: 0, message: 'success' };
});
});
}
return res.json({ code: 0, message: 'success' });
} catch (ex) {
return ErrorHandel(ex, req, res, next);
}
};

@ -29,4 +29,23 @@ router
authorize([Permissions.USER]),
controller.delete
);
router
.route('/download')
.put(
authorize([Permissions.USER]),
controller.download
);
router
.route('/force-delete')
.patch(
authorize([Permissions.USER]),
controller.forceDelete
);
router
.route('/delete-multiple')
.patch(
authorize([Permissions.USER]),
controller.deleteMultiple
);
export default router;

Loading…
Cancel
Save