1.0.17 ā€¢ Published 7 months ago

soft-delete-plugin-mongoose v1.0.17

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

a mongoose plugin that allows you to soft delete documents and restore them in MongoDB (for JS & TS)

  • Soft delete your MongoDB documents and restore them

  • JS and TS

šŸ  Homepage

Install

npm install soft-delete-plugin-mongoose

How It Works

Javascript Version

const mongoose = require('mongoose');
const { softDeletePlugin } = require('soft-delete-plugin-mongoose');
const Schema = mongoose.Schema;

const TestSchema = new Schema({
    name: String,
    lastName: String
});

TestSchema.plugin(softDeletePlugin);
const TestModel =  mongoose.model("Test", TestSchema);

const test = new TestModel({name: 'hello', lastName: "world"});

/*** returns an object containing the number of softDeleted elements ***/
/***
    {deleted: number} 
***/
/***
    the argument options is optional
***/
const options = { validateBeforeSave: false };
const deleted = await TestModel.softDelete({ _id: test._id, name: test.name }, options);
/** 
 const deleted = await Test.softDelete({ _id: test._id, name: test.name }); is also valid
**/

/*** returns an object containing the number of restored elements ***/
/***
    {restored: number} 
***/
const restored = await TestModel.restore({ _id: test._id, name: test.name });

/*** returns all deleted elements ***/
const deletedElements = await TestModel.findDeleted();

/*** returns all available elements (not deleted) ***/
const availableElements = await TestModel.find();

/*** counts all available elements (not deleted) ***/
const countAvailable = await TestModel.count();

/*** findById returns the document whether deleted or not  ***/

Typescript Version

import * as mongoose from 'mongoose';
import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose';

interface Test extends mongoose.Document {
    name: string;
    lastName: string;
}

const TestSchema = new mongoose.Schema({
    name: String,
    lastName: String
});
TestSchema.plugin(softDeletePlugin);
// two different ways of implementing model depending on technology used
// 1st way
const testModel = mongoose.model<Test, SoftDeleteModel<Test>>('Test', TestSchema);

//2nd way (nestjs way)
constructor(@InjectModel('Test') private readonly testModel: SoftDeleteModel<Test>) {}

const test = await new this.testModel({name: 'hello', lastName: 'world'});

/*** returns an object containing the number of softDeleted elements ***/
/***
    {deleted: number} 
***/
/***
    the argument options is optional
***/
const options = { validateBeforeSave: false };
const deleted = await this.testModel.softDelete({ _id: test._id, name: test.name }, options);
/** 
 const deleted = await Test.softDelete({ _id: test._id, name: test.name }); is also valid
**/

/*** returns an object containing the number of restored elements ***/
/***
    {restored: number} 
***/
const restored = await this.testModel.restore({ _id: test._id, name: test.name });

/*** returns all deleted elements ***/
const deletedElements = await this.testModel.findDeleted();

/*** returns all available elements (not deleted) ***/
const availableElements = await this.testModel.find();

/*** counts all available elements (not deleted) ***/
const countAvailable = await this.test.count();

/*** findById returns the document whether deleted or not  ***/

Author

šŸ‘¤ Nour

šŸ¤ Contributing

Contributions, issues and feature requests are welcome!Feel free to check issues page. You can also take a look at the contributing guide.

Show your support

Give a STAR if this project helped you!

šŸ“ License

  • Copyright Ā© 2021 Nour.
  • This project is MIT licensed.

This README was generated with by readme-md-generator

1.0.17

7 months ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago