UNPKG

prisma-extension-pagination

Version:
61 lines (60 loc) 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.paginateWithPages = paginateWithPages; const helpers_1 = require("./helpers"); async function paginateWithPages(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] = await Promise.all([ model.findMany({ ...query, ...{ skip: (page - 1) * (limit ?? 0), take: limit === null ? undefined : limit, }, }), model.count({ ...query, ...helpers_1.resetSelection, ...helpers_1.resetOrdering, }), ]); pageCount = limit === null ? 1 : Math.ceil(totalCount / limit); nextPage = page < pageCount ? page + 1 : null; } else { results = await model.findMany({ ...query, ...{ skip: (page - 1) * (limit ?? 0), take: limit === null ? undefined : limit + 1, }, }); nextPage = limit === null ? null : results.length > limit ? page + 1 : null; if (nextPage) { results.pop(); } } return [ results, { ...{ isFirstPage: previousPage === null, isLastPage: nextPage === null, currentPage: page, previousPage, nextPage, }, ...(includePageCount === true ? { pageCount, totalCount, } : {}), }, ]; }