AdaptersAdapters
Adapters
Escolha o ORM que combina com seu projeto — o nestjs-rest-query trabalha com TypeORM, Drizzle e permite adapters customizados.
O nestjs-rest-query separa a lógica de parsing de query params da implementação específica do ORM. Isso é feito através de adapters — cada adapter traduz queries normalizadas em chamadas nativas do ORM.
O padrão Adapter
Quando você decorar um endpoint com @ApiDynamicQuery ou @DynamicQuery, a biblioteca:
- Valida a query string contra o
RulesConfig(whitelist de segurança) - Normaliza os parâmetros: filtros, sorts, fields, includes
- Delega ao adapter — que transforma essa normalização em SQL/query nativa
O adapter é registrado uma vez via DynamicQueryBuilderModule.forRoot({ adapter }). A partir daí, a mesma RulesConfig funciona identicamente em qualquer ORM suportado.
Quando usar cada adapter
| ORM | Quando usar | Status |
|---|---|---|
| TypeORM | Você já usa TypeORM e @nestjs/typeorm. É o padrão — sem configuração extra. | ✅ Stable |
| Drizzle | Você prefere tipagem estrita, geração de schema type-safe, ou quer um ORM mais moderno. Requer configuração de relations map. | ✅ Stable |
| Prisma | Você já tem um schema Prisma. O adapter retorna o grafo aninhado nativo do Prisma e @prisma/client é peer dep opcional. | ✅ Stable |
| Custom | Você quer suportar Kysely, raw SQL, ou qualquer outro ORM. Implemente a interface RestQueryAdapter. | 📖 Saiba mais |
Primeiros passos
Escolha seu ORM: