UNPKG

@takentrade/takentrade-libs

Version:
50 lines (49 loc) 2.21 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationInterceptor = void 0; const common_1 = require("@nestjs/common"); /** * This is intended to intercept incoming requests for routes that intend to use pagination. * It attaches a `Pagination` object named `pagination` to the request object. * * This new `pagination` property on the request body uses the `page` and `limit` properties on * the request's query object if they exist. If no `page` or `limit` property is provided by * the request client, this interceptor sets defaults. * * Defaults: * * `page` = 1 and; * * `limit` = 10 */ let PaginationInterceptor = class PaginationInterceptor { intercept(context, next) { const request = context.switchToHttp().getRequest(); let page = Number.parseInt(request.query.page); let limit = Number.parseInt(request.query.limit); // check validity and set defaults where necessary page = page.toString() === Number.NaN.toString() ? 1 : page; limit = limit.toString() === Number.NaN.toString() ? 10 : limit; // set boundaries page = page <= 0 ? 1 : page; limit = limit > 100 ? 100 : limit; const pagination = { offset: page * limit - limit, skip: (page - 1) * limit, limit, page, }; request.pagination = pagination; return next.handle(); } }; exports.PaginationInterceptor = PaginationInterceptor; exports.PaginationInterceptor = PaginationInterceptor = __decorate([ (0, common_1.Injectable)() ], PaginationInterceptor);