{"library":"nestjs-typeorm-paginate","title":"NestJS TypeORM Pagination Helper","description":"The `nestjs-typeorm-paginate` library provides a robust and strictly typed pagination solution for NestJS applications integrated with TypeORM. It simplifies the process of generating pagination objects from TypeORM repositories or query builders, ensuring type safety throughout your codebase. The current stable version is 4.1.0, which is specifically designed for compatibility with TypeORM `^0.3.0` and a broad spectrum of `@nestjs/common` versions up to `^11.0.0`. The project's release cadence is often tied to major version updates of TypeORM and NestJS, necessitating careful version management during upgrades. Its key differentiators include explicit support for both `Repository` instances and `QueryBuilder` objects, offering flexibility in how data is queried, alongside comprehensive TypeScript typings for all pagination options and the resulting paginated data structure, making it a reliable choice for complex data presentation needs.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install nestjs-typeorm-paginate"],"cli":null},"imports":["import { paginate } from 'nestjs-typeorm-paginate';","import { Pagination } from 'nestjs-typeorm-paginate';","import { IPaginationOptions } from 'nestjs-typeorm-paginate';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { Controller, DefaultValuePipe, Get, ParseIntPipe, Query, Injectable } from '@nestjs/common';\nimport { Repository, Entity, PrimaryGeneratedColumn, Column } from 'typeorm';\nimport { InjectRepository } from '@nestjs/typeorm';\nimport { paginate, Pagination, IPaginationOptions } from 'nestjs-typeorm-paginate';\n\n// cat.entity.ts\n@Entity('cats')\nexport class CatEntity {\n  @PrimaryGeneratedColumn()\n  id: number;\n\n  @Column()\n  name: string;\n\n  @Column()\n  breed: string;\n}\n\n// cat.service.ts\n@Injectable()\nexport class CatService {\n  constructor(\n    @InjectRepository(CatEntity)\n    private readonly repository: Repository<CatEntity>,\n  ) {}\n\n  async paginate(options: IPaginationOptions): Promise<Pagination<CatEntity>> {\n    // Example using a QueryBuilder\n    const queryBuilder = this.repository.createQueryBuilder('c');\n    queryBuilder.orderBy('c.name', 'ASC');\n    return paginate<CatEntity>(queryBuilder, options);\n  }\n}\n\n// cats.controller.ts\n@Controller('cats')\nexport class CatsController {\n  constructor(private readonly catService: CatService) {}\n\n  @Get('')\n  async index(\n    @Query('page', new DefaultValuePipe(1), ParseIntPipe) page: number = 1,\n    @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number = 10,\n  ): Promise<Pagination<CatEntity>> {\n    limit = limit > 100 ? 100 : limit;\n    // In a real application, BASE_URL would be dynamically determined, e.g., from request context\n    const baseUrl = process.env.BASE_URL ?? 'http://localhost:3000';\n    return this.catService.paginate({\n      page,\n      limit,\n      route: `${baseUrl}/cats`,\n    });\n  }\n}","lang":"typescript","description":"This quickstart demonstrates how to implement pagination in a NestJS application using `nestjs-typeorm-paginate`. It covers the setup of a `CatEntity`, a `CatService` that utilizes the `paginate` function with a TypeORM `QueryBuilder`, and a `CatsController` that handles URL query parameters for page and limit, returning a `Pagination` object.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}