UNPKG

prisma-extension-pagination

Version:
58 lines (57 loc) 2.55 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.paginateWithPages = void 0; const helpers_1 = require("./helpers"); const paginateWithPages = (model_1, query_1, _a) => __awaiter(void 0, [model_1, query_1, _a], void 0, function* (model, query, { page, limit, includePageCount }) { const previousPage = page > 1 ? page - 1 : null; let results; let nextPage; let pageCount = null; let totalCount = null; if (includePageCount) { [results, totalCount] = yield Promise.all([ model.findMany(Object.assign(Object.assign({}, query), { skip: (page - 1) * (limit !== null && limit !== void 0 ? limit : 0), take: limit === null ? undefined : limit, })), model.count(Object.assign(Object.assign(Object.assign({}, query), helpers_1.resetSelection), helpers_1.resetOrdering)), ]); pageCount = limit === null ? 1 : Math.ceil(totalCount / limit); nextPage = page < pageCount ? page + 1 : null; } else { results = yield model.findMany(Object.assign(Object.assign({}, query), { skip: (page - 1) * (limit !== null && limit !== void 0 ? limit : 0), take: limit === null ? undefined : limit + 1, })); nextPage = limit === null ? null : results.length > limit ? page + 1 : null; if (nextPage) { results.pop(); } } return [ results, Object.assign({ isFirstPage: previousPage === null, isLastPage: nextPage === null, currentPage: page, previousPage, nextPage, }, (includePageCount === true ? { pageCount, totalCount, } : {})), ]; }); exports.paginateWithPages = paginateWithPages;