@tasolutions/express-core
Version:
All libs for express
42 lines (36 loc) • 1.75 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 restore
*/
restore: async (req, res, Collection) => {
const moduleName = Collection.collection.collectionName;
const crudOptions = {
type: 'CRUD',
action: 'RESTORE',
typeName: moduleName,
options: {}
};
try {
let payloadFilter = { _id: req.params._id, is_deleted: true };
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, true);
if (!isAuthorized) return Response.error(req, res, { message: 'User does not have permission to update the record.', statusCode: httpStatus.FORBIDDEN }, crudOptions);
await Collection.updateOne(payloadFilter, {
$set: {
is_deleted: false,
restored_at: new Date(),
restored_by_identifier: req.body.restored_by_identifier || null
}
});
sendMessage(`[RESTORE][${moduleName}] record`, JSON.stringify(record, null, 2));
return Response.success(req, res, true, {}, crudOptions);
} catch (e) {
return Response.error(req, res, e, crudOptions);
}
}
}