Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nour-karoui/mongoose-soft-delete
a mongoose plugin that allows you to soft delete documents and restore them (for TS & JS)
https://github.com/nour-karoui/mongoose-soft-delete
javascript mongodb mongoose mongoose-plugin npm-package restore soft-delete softdelete typescript
Last synced: 26 days ago
JSON representation
a mongoose plugin that allows you to soft delete documents and restore them (for TS & JS)
- Host: GitHub
- URL: https://github.com/nour-karoui/mongoose-soft-delete
- Owner: nour-karoui
- License: mit
- Created: 2021-04-27T09:20:56.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-17T19:40:54.000Z (5 months ago)
- Last Synced: 2024-10-05T12:28:51.871Z (about 1 month ago)
- Topics: javascript, mongodb, mongoose, mongoose-plugin, npm-package, restore, soft-delete, softdelete, typescript
- Language: TypeScript
- Homepage:
- Size: 1.82 MB
- Stars: 40
- Watchers: 3
- Forks: 14
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Welcome to soft-delete-plugin-mongoose 👋
> 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](https://github.com/nour-karoui/mongoose-soft-delete)
## Install
```sh
npm install soft-delete-plugin-mongoose
```## How It Works
**Javascript Version**
```js
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**
```ts
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', TestSchema);//2nd way (nestjs way)
constructor(@InjectModel('Test') private readonly testModel: SoftDeleteModel) {}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**
* Github: [@nour-karoui](https://github.com/nour-karoui)
* LinkedIn: [@nourkaroui](https://www.linkedin.com/in/nourkaroui/)## 🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/nour-karoui/mongoose-soft-delete/issues). You can also take a look at the [contributing guide](https://github.com/nour-karoui/mongoose-soft-delete/blob/master/CONTRIBUTING.md).## Show your support
Give a [STAR](https://github.com/nour-karoui/mongoose-soft-delete) if this project helped you!
## 📝 License
* Copyright © 2021 [Nour](https://github.com/nour-karoui).
* This project is [MIT](https://github.com/nour-karoui/mongoose-soft-delete/blob/master/LICENSE) licensed.***
_This README was generated with by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_