Does NestJS/Swagger support doc'ing query params w/o separate use?

I am looking for a way to document the query params of type OrderQueryDto & PaginatedQueryDto with the Nest Swagger-module. Is there a decorator like @ApiImplicityQueryString({ type: OrderQueryDto & PaginatedQueryDto })?

I need a way to document query params of type OrderQueryDto & PaginatedQueryDto when using the Nest Swagger-module. Is there a decorator I can use, such as @ApiImplicityQueryString({ type: OrderQueryDto & PaginatedQueryDto })?

DTOs:

import { Transform } from 'class-transformer';
import { IsInt, IsOptional } from 'class-validator';

export class PaginatedQueryDto {
  @IsInt()
  @IsOptional()
  @Transform(value => value && parseInt(value, 10))
  take?: number;

  @IsInt()
  @IsOptional()
  @Transform(value => value && parseInt(value, 10))
  skip?: number;
}
import { IsInt, IsOptional, IsEnum } from 'class-validator';
import { Transform } from 'class-transformer';
import { OrderStatus } from './order.entity';

export class OrderQueryDto {
  @IsInt()
  @IsOptional()
  @Transform(value => value && parseInt(value, 10))
  reseller: number;

  @IsInt()
  @IsOptional()
  @Transform(value => value && parseInt(value, 10))
  customer: number;

  @IsEnum(OrderStatus)
  @IsOptional()
  status: OrderStatus;
}

I need to document query params of type OrderQueryDto & PaginatedQueryDto when using the Nest Swagger-module. Is there a decorator such as @ApiImplicityQueryString({ type: OrderQueryDto & PaginatedQueryDto })?

Yes, there is a decorator you can use called @ApiQuery which you can attach to your controller method parameter. Here’s an example of how you can use it:

import { ApiQuery } from '@nestjs/swagger';
import { OrderQueryDto, PaginatedQueryDto } from './dto';

@Controller('orders')
export class OrdersController {
  @Get()
  @ApiQuery({ name: 'reseller', required: false, type: Number })
  @ApiQuery({ name: 'customer', required: false, type: Number })
  @ApiQuery({ name: 'status', required: false, enum: OrderStatus })
  @ApiQuery({ name: 'take', required: false, type: Number })
  @ApiQuery({ name: 'skip', required: false, type: Number })
  findAll(
    @Query() query: OrderQueryDto & PaginatedQueryDto,
  ): Promise<OrderEntity[]> {
    // your code here
  }
}

In this example, we are using the @ApiQuery decorator to document each of the query parameters. You can attach this decorator multiple times to a single controller method parameter to document each query parameter individually.