UNPKG

mongoose-soft-delete-plugin

Version:

A Mongoose plugin that adds soft delete functionality and active/inactive status to your Mongoose models.

46 lines (37 loc) 1.31 kB
// lib/softDelete.js const softDeletePlugin = (schema) => { // Add soft delete and active/inactive fields schema.add({ isDeleted: { type: Boolean, default: false }, deletedAt: { type: Date, default: null }, isActive: { type: Boolean, default: true } }); // Method to soft delete a document schema.methods.softDelete = function () { this.isDeleted = true; this.deletedAt = new Date(); return this.save(); }; // Method to deactivate a document schema.methods.deactivate = function () { this.isActive = false; return this.save(); }; // Method to activate a document schema.methods.activate = function () { this.isActive = true; return this.save(); }; // Static method to find non-deleted and active documents schema.statics.findActiveNonDeleted = function (query = {}) { return this.find({ ...query, isDeleted: false, isActive: true }); }; // Middleware to filter out deleted and inactive documents on find schema.pre('find', function () { this.where({ isDeleted: false, isActive: true }); }); schema.pre('findOne', function () { this.where({ isDeleted: false, isActive: true }); }); }; module.exports = softDeletePlugin;