Skip to content

πŸ“ Swagger ​

Use ApiPaginatedResponse on endpoints that return PaginatedDTO<T>.

ts
import { Controller, Get, Query } from '@nestjs/common';
import { ApiPaginatedResponse, PaginatedDTO, QueryDTO } from '@querry-kit/nest-prisma-query';

@Controller('projects')
export class ProjectsController {
  constructor(private readonly projectsService: ProjectsService) {}

  @Get()
  @ApiPaginatedResponse({ model: ProjectDTO, description: 'Projects' })
  async query(@Query() query: QueryDTO<ProjectTypeMap>): Promise<PaginatedDTO<ProjectDTO>> {
    const { items, pageMeta } = await this.projectsService.query<Project>(query);
    return new PaginatedDTO(items.map(ProjectDTO.fromModel), pageMeta);
  }
}

The decorator registers PaginatedDTO, PageMetaDTO, and the item model as extra Swagger models, then composes a response schema with:

ts
{
  items: ProjectDTO[];
  meta: PageMetaDTO;
}

ApiPaginatedResponse accepts normal ApiOkResponse options except schema and type, which are managed by the helper.

Released under the MIT License.