nestjs-rest-querynestjs-rest-query
Primeiros PassosPré-requisito NestJS

Pré-requisito NestJS

Requisitos para usar o nestjs-rest-query em uma aplicação NestJS com TypeORM, Drizzle ou Prisma.

Antes de instalar a biblioteca, confirme se o seu projeto NestJS já atende aos requisitos abaixo.

Esta lib foi pensada para aplicações NestJS que usam TypeORM, Drizzle ou Prisma e decorators habilitados. Se esse for o seu cenário, a configuração costuma ser simples.

Aplicação NestJS

RequisitoVersão mínimaObservação
NestJS^11.0.0A biblioteca foi desenhada para projetos NestJS com @nestjs/common e @nestjs/core presentes.

Runtime

RequisitoVersão mínima
Node.js>= 20

Dependências peer

Esses pacotes devem estar presentes no seu projeto — não são incluídos na biblioteca.

PacoteVersão mínimaObrigatório
@nestjs/common^11.0.0Sim
@nestjs/core^11.0.0Sim
reflect-metadata^0.2.0Sim
typeorm^0.3.26Um dos adapters
drizzle-orm^0.45.0Um dos adapters
@prisma/client^5 || ^6 || ^7Um dos adapters
@nestjs/swagger^11.0.0Opcional

Se o seu projeto ainda não está usando NestJS, comece por criar a aplicação com nest new. A biblioteca depende do ecossistema do framework para decorators, metadata e injeção de dependência.

@nestjs/swagger só é necessário se você quiser gerar documentação OpenAPI com @ApiDynamicQuery e testar filtros pela UI do Swagger. Veja a seção Swagger para detalhes.

Adapters suportados

TypeORM

O suporte a TypeORM é estável e usa um SelectQueryBuilder gerado a partir do seu Repository. Toda a lógica de filtros, sorts, fields, includes e paginação é aplicada sobre esse builder.

Isso significa que:

  • Você precisa ter o TypeORM configurado com pelo menos um banco de dados (PostgreSQL, MySQL, SQLite, etc.).
  • Suas entidades devem usar os decorators do TypeORM (@Entity, @Column, @ManyToOne, etc.).
  • O adapter de TypeORM opera sobre repositórios TypeORM — não há suporte a query raw ou outras camadas de abstração.

Drizzle

O suporte a Drizzle é estável e é ativado via DrizzleAdapter. O adapter usa a sua instância de Drizzle, além de um mapa explícito de relations quando relations são necessárias.

Isso significa que:

  • Você precisa ter o Drizzle configurado com um driver suportado (PostgreSQL, MySQL, SQLite, etc.).
  • Seu schema precisa ser declarado com Drizzle (pgTable, mysqlTable, etc.).
  • Ao usar includes, você precisa declarar o mapa de relations para o adapter resolvê-las com segurança.

Prisma

O suporte a Prisma é estável e é ativado via PrismaAdapter. O adapter funciona com o Prisma Client e qualquer banco de dados suportado pelo Prisma.

Isso significa que:

  • Você precisa ter o Prisma configurado com um banco de dados suportado (PostgreSQL, MySQL, SQLite, etc.).
  • Seu schema precisa estar declarado no schema.prisma e o Prisma Client gerado.
  • Passe um PrismaSource descrevendo o client e o nome do modelo para queryBuilderService.execute().
Editar esta página no GitHub

On this page