UNPKG

mongoose-smart-delete

Version:

A Mongoose plugin for implementing soft delete functionality, allowing documents to be marked as deleted without being removed from the database.

51 lines (40 loc) 1.49 kB
const mongoose = require('mongoose') const MongooseSmartDelete = require('./MongooseSmartDelete') MongooseSmartDelete.setOriginalMethods({ Model: { deleteOne: mongoose.Model.deleteOne, deleteMany: mongoose.Model.deleteMany, findOneAndDelete: mongoose.Model.findOneAndDelete }, Document: { deleteOne: mongoose.Model.prototype.deleteOne } }) mongoose.Model.deleteOne = function () { return new MongooseSmartDelete(this).modelDeleteOne(...arguments) } mongoose.Model.prototype.deleteOne = function () { return new MongooseSmartDelete(this).documentDeleteOne(...arguments) } mongoose.Model.restoreOne = function () { return new MongooseSmartDelete(this).modelRestoreOne(...arguments) } mongoose.Document.prototype.restoreOne = function () { return new MongooseSmartDelete(this).documentRestoreOne(...arguments) } mongoose.Model.deleteMany = function () { return new MongooseSmartDelete(this).deleteMany(...arguments) } mongoose.Model.restoreMany = function () { return new MongooseSmartDelete(this).restoreMany(...arguments) } mongoose.Model.findOneAndDelete = function () { return new MongooseSmartDelete(this).findOneAndDelete(...arguments) } const withDeleted = function (enable = true) { this.options = this.options || {} this.options.withDeleted = enable return this } mongoose.Aggregate.prototype.withDeleted = withDeleted mongoose.Query.prototype.withDeleted = withDeleted