npm.io
2.0.10 • Published 3 years agoCLI

prisma-generator-nestjs-swagger

Licence
MIT
Version
2.0.10
Deps
6
Size
128 kB
Vulns
0
Weekly
0

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

  1. Install the generator
npm i prisma-generator-nestjs-swagger
  1. Inside your prisma schema, add the following:
generator nestJsSwagger {
  provider = "prisma-generator-nestjs-swagger"
}

The output will be generated to:

node_modules/@generated/swagger
  1. 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);
}
  1. 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

Keywords