AdaptersTypeORM Adapter
TypeORM Adapter
Use nestjs-rest-query with TypeORM - the default adapter.
TypeORM is the default adapter. If you already use TypeORM and @nestjs/typeorm, everything works without extra configuration.
Install
pnpm add typeorm
# ou
npm install typeormIf you do not have TypeORM installed yet, the library will pull it automatically (it is a peer dependency).
Module setup
import { Module } from '@nestjs/common';
import { DynamicQueryBuilderModule } from 'nestjs-rest-query';
@Module({
imports: [
DynamicQueryBuilderModule.forRoot({
pagination: { defaultPerPage: 20, maxPerPage: 100 },
}),
],
})
export class AppModule {}No adapter configuration is required - TypeORM is the default. If you want to be explicit:
import { TypeOrmAdapter } from 'nestjs-rest-query/typeorm';
DynamicQueryBuilderModule.forRoot({
adapter: new TypeOrmAdapter(),
pagination: { defaultPerPage: 20, maxPerPage: 100 },
});Usage
import { Controller, Get, Query } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import {
ApiDynamicQuery,
QueryRules,
QueryBuilderService,
RulesConfig,
QueryInput,
} from 'nestjs-rest-query';
import { User } from './user.entity';
const rules: RulesConfig = {
alias: 'user',
filters: ['email', 'name', 'createdAt', 'status'],
sorts: ['name', 'createdAt'],
fields: ['id', 'name', 'email'],
includes: ['company'],
search: ['name', 'email'],
};
@Controller('users')
export class UsersController {
constructor(
@InjectRepository(User) private readonly users: Repository<User>,
private readonly qb: QueryBuilderService
) {}
@Get()
@ApiDynamicQuery(rules)
list(@Query() query: QueryInput, @QueryRules() endpointRules = rules) {
return this.qb.execute(this.users, query, endpointRules);
}
}Result
{
"data": [
{
"id": "u_1",
"name": "Ana",
"email": "ana@acme.com",
"company": { "id": "c_1", "name": "Acme" }
}
],
"page": 1,
"perPage": 20,
"total": 42,
"lastPage": 3
}Next steps
If you want to switch to Drizzle, see the Drizzle Adapter.
For a complete guide to parameters and operators, see the Usage Guide.