nestjs-api-tools
Version:
Wrappers for convenient API development including validation, logging and i18n wrappers
21 lines (17 loc) • 689 B
text/typescript
import {OFFSET_PARAM, POSTGRES_MAX_INT} from './../constants';
import {ExecutionContextHost} from '@nestjs/core/helpers/execution-context-host';
import {createParamDecorator} from '@nestjs/common';
export interface OffsetOptions {
defaultOffset: number;
offsetParam: string;
}
/**
* Offset decorator.
*/
export const Offset = createParamDecorator(
(options: OffsetOptions = {defaultOffset: 0, offsetParam: OFFSET_PARAM}, ctx: ExecutionContextHost): number => {
const request = ctx.switchToHttp().getRequest();
const offset = parseInt(request.query[options.offsetParam]) || options.defaultOffset;
return offset > POSTGRES_MAX_INT ? POSTGRES_MAX_INT : offset;
},
);