nestjs-api-tools
Version:
Wrappers for convenient API development including validation, logging and i18n wrappers
25 lines (22 loc) • 706 B
text/typescript
import {ExecutionContextHost} from '@nestjs/core/helpers/execution-context-host';
import {LIMIT_PARAM} from '../constants';
import {createParamDecorator} from '@nestjs/common';
export interface LimitOptions {
defaultLimit: number;
limitParam: string;
maxLimit: number;
}
/**
* Limit decorator.
*/
export const Limit = createParamDecorator(
(options: LimitOptions = {
defaultLimit: 25,
limitParam: LIMIT_PARAM,
maxLimit: 500,
}, ctx: ExecutionContextHost): number => {
const request = ctx.switchToHttp().getRequest();
const limit = parseInt(request.query[options.limitParam]) || options.defaultLimit;
return limit > options.maxLimit ? options.maxLimit : limit;
},
);