UNPKG

@tasolutions/express-core

Version:
42 lines (36 loc) 1.74 kB
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); } } }