nestjs-paginate-relations-filter-middleware
Version:
An enhanced middleware for capturing unrelated filters for nestjs-paginate lib
109 lines (73 loc) • 3.75 kB
Markdown
An enhanced middleware for capturing unrelated filters for nestjs-paginate lib
[](https://www.npmjs.com/package/nestjs-paginate-relations-filter-middleware)
[](https://npmcharts.com/compare/nestjs-paginate-relations-filter-middleware?minimal=true)
[](https://github.com/mustafakendiguzel/nestjs-paginate-relations-filter-middleware) An enhanced middleware for capturing unrelated filters for nestjs-paginate lib.
```bash
$ npm i nestjs-paginate-relations-filter-middleware
```
First of all, this package was developed for [nestjs-paginate lib](https://www.npmjs.com/package/nestjs-paginate). So don't forget to install nestjs-paginate before using this package
When sending relation via Swagger, it was supposed to come as relation[] but the server was giving 500 because it came as relation, we solved this problem with decals. The other problem is that if we try to filter about that package without sending a relation, we were getting 500 because the relation was not sent. This package was developed to solve the problems here.
Example;
```bash
Wrong Use: http://localhost:3000/patient-consent?filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25
Correct Use: http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25
```
Error you will get with wrong usage without Nestjs-paginate-relations-filter-middleware
```bash
{
"statusCode": 500,
"error": "Internal Server Error"
}
```
Error you will get with wrong usage with Nestjs-paginate-relations-filter-middleware
```bash
{
"statusCode": 400,
"message": "You need to type the Relation of the Filter you type. Example; WrongLink: http://localhost:3000/patient-consent?filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&relations=patient, CorrectLink: http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&relations=patient",
"error": "Bad Request"
}
```
With this package, we are now preventing the server from pulling(500). Also you can safely send relation from swagger.
## Quick Start
```bash
# For import
$ import { RelationFilterMiddleware,RelationDecorator } from 'nestjs-paginate-relations-filter-middleware';
```
```bash
export class AppModule {
configure(consumer: MiddlewareConsumer): void {
consumer.apply(RelationFilterMiddleware).forRoutes({
path: '*',
method: RequestMethod.ALL,
});
}
}
```
```bash
@Get()
@ApiQuery({ name: 'relations', required: false, type: [String], isArray: true }) // For Swagger
findAll(@Paginate() query: PaginateQuery, @RelationDecorator() relation: any) {
return this.patientGdprService.findAll(query, relation);
}
```
```bash
http://localhost:3000/patient-consent?relations=consentForm,patient,surrogate
```
Send it separated by commas.
```bash
http://localhost:3000/patient-consent?relations=consentForm&filter.consentForm.id=86190245-1246-415b-a5e8-7c5813535f25&filter.consentForm.status=pending&filter.code=302
```
Send it separated by ampersand. You can find more details with [nestjs-paginate](https://www.npmjs.com/package/nestjs-paginate) lib.
- Author - Mustafa Kendigüzel
Nestjs-file-mimetype-filter [MIT licensed](LICENSE).