@tasolutions/express-core
Version:
All libs for express
42 lines (36 loc) • 1.74 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 remove
*/
remove: 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, is_deleted: false };
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.updateOne(payloadFilter, {
$set: {
is_deleted: true,
deleted_at: new Date(),
deleted_by_identifier: req.body.deleted_by_identifier || null
}
});
sendMessage(`[DELETE][${moduleName}] record`, JSON.stringify(record, null, 2));
return Response.success(req, res, true, {}, crudOptions);
} catch (e) {
return Response.error(req, res, e, crudOptions);
}
}
}