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
| Requisito | Versão mínima | Observação |
|---|---|---|
| NestJS | ^11.0.0 | A biblioteca foi desenhada para projetos NestJS com @nestjs/common e @nestjs/core presentes. |
Runtime
| Requisito | Versã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.
| Pacote | Versão mínima | Obrigatório |
|---|---|---|
@nestjs/common | ^11.0.0 | Sim |
@nestjs/core | ^11.0.0 | Sim |
reflect-metadata | ^0.2.0 | Sim |
typeorm | ^0.3.26 | Um dos adapters |
drizzle-orm | ^0.45.0 | Um dos adapters |
@prisma/client | ^5 || ^6 || ^7 | Um dos adapters |
@nestjs/swagger | ^11.0.0 | Opcional |
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.prismae o Prisma Client gerado. - Passe um
PrismaSourcedescrevendo o client e o nome do modelo paraqueryBuilderService.execute().