prisma-generator-nestjs-swagger
v2.0.10
Published
generates basic dto classes for use with @nestjs/swagger and class-validator
Downloads
83
Maintainers
Readme
prisma-generator-nestjs-swagger
This generator is used to create all the possible dto classes you'll need for prisma crud operations, while also supporting open-api specs, including:
- Create
- Delete
- Find
- Update
It includes an extended ValidationPipe serializer that will transform the DTO to match the expected prisma query object. It includes support for pagination (skip/take or cursor), filtering and ordering.
Getting Started
- Install the generator
npm i prisma-generator-nestjs-swagger
- Inside your prisma schema, add the following:
generator nestJsSwagger {
provider = "prisma-generator-nestjs-swagger"
}
The output will be generated to:
node_modules/@generated/swagger
- Add the
ValidationPipe
as a global pipe:
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ValidationPipe({transform: true}));
await app.listen(3000);
}
- Import & use the generated DTOs (based on code generated in example):
import { FindManyUserDto } from '@generated/swagger';
import { Controller, Get, Query, Req, Res } from '@nestjs/common';
// assumed import of prisma wrapped service
import { PrismaService } from '../prisma/prisma.service';
@Controller()
export class UserController {
constructor(private prisma: PrismaService) {
}
@Get('/users')
async getUsers(@Query() query: FindManyUserDto, @Res() res) {
const value = await this.prisma.user.findMany({
cursor: query.cursor,
orderBy: query.orderBy,
skip: query.skip,
take: query.take,
where: query.where
});
return res.send(value);
}
}
Example
See our this doc for an example output