@tasolutions/express-core
Version:
All libs for express
36 lines (30 loc) • 1.53 kB
JavaScript
const Response = require('../../utils/v1Response');
const { httpStatus } = require('../../utils/httpStatus');
const { mapHeadersAndCheckAuthorization } = require('../../utils/requestHeader');
const { sendMessage } = require('../../clients/discord');
module.exports = {
/**
* This crud removePermanently
*/
removePermanently: async (req, res, Collection) => {
const moduleName = Collection.collection.collectionName;
const crudOptions = {
type: 'CRUD',
action: 'DELETE',
typeName: moduleName,
options: {}
};
try {
let payloadFilter = { _id: req.params._id };
const record = await Collection.findOne(payloadFilter);
if (!record) return Response.error(req, res, { message: `Unable to find ${moduleName} with id: ${req.params._id}`, statusCode: httpStatus.NOT_FOUND }, crudOptions);
const isAuthorized = await mapHeadersAndCheckAuthorization(req, payloadFilter, Collection);
if (!isAuthorized) return Response.error(req, res, { message: 'User does not have permission to update the record.', statusCode: httpStatus.FORBIDDEN }, crudOptions);
await Collection.deleteOne(payloadFilter);
sendMessage(`[DELETE_PERMANENTLY][${moduleName}] record`, JSON.stringify(record, null, 2));
return Response.success(req, res, true, {}, crudOptions);
} catch (e) {
return Response.error(req, res, e, crudOptions);
}
}
}