An open API service indexing awesome lists of open source software.

https://github.com/mikemajesty/nestjs-mongoose-generic-repository

Nestjs mongoose generic repository
https://github.com/mikemajesty/nestjs-mongoose-generic-repository

generic-repository mogoose mongodb nestjs repository repository-pattern

Last synced: about 2 months ago
JSON representation

Nestjs mongoose generic repository

Awesome Lists containing this project

README

        

# Nestjs Mongoose Generic Repository

```bash
$ npm i nestjs-mongoose-generic-repository
```

## Usage

```bash
├── cats
├── controller.ts
├── entity.ts
├── module.ts
├── repository.ts
├── schema.ts
```

```ts
--repository.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Repository } from 'nestjs-mongoose-generic-repository';

import { CatDocument, Cats } from './schema';

@Injectable()
export class CatsRepository extends Repository {
constructor(@InjectModel(Cats.name) private entity: Model) {
super(entity);
}
}
```

```ts
--controller.ts

import { Body, Controller, Post } from '@nestjs/common';
import { CreatedModel } from 'nestjs-mongoose-generic-repository';

import { CatsDTO } from './entity';
import { CatsRepository } from './repository';

@Controller('cats')
export class CatsController {
constructor(private readonly catRepository: CatsRepository) {}

@Post()
async save(@Body() model: CatsDTO): Promise {
const saved = await this.catRepository.create(model);
return saved;
}
}
```

---
### Operators

```bash
create
find
findById
findAll
remove
updateOne
updateMany
```
#### Lib types
```ts

import { ObjectId } from 'mongoose';

export type UpdatedModel = {
matchedCount: number;
modifiedCount: number;
acknowledged: boolean;
upsertedId: unknown | ObjectId;
upsertedCount: number;
};

export type RemovedModel = {
deletedCount: number;
deleted: boolean;
};

export type CreatedModel = {
id: string;
created: boolean;
};

```
---

The following is a list of all the people that have contributed to
nestjs-mongoose-generic-repository. Thanks for your contributions!

[mikemajesty](https://github.com/mikemajesty)

## License

It is available under the MIT license.
[License](https://opensource.org/licenses/mit-license.php)