UNPKG

turtle-express

Version:

`turtle-express` is kinda a framework or a library based on `express.js` with an opinionated express router with type safety and schema validation with zod. Also many [more features](https://github.com/mm-ninja-turtles/turtle-express/discussions/7) planni

75 lines 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPagination = exports.paginationSchema = void 0; const zod_1 = require("zod"); exports.paginationSchema = zod_1.z.object({ firstPage: zod_1.z.number(), totalPages: zod_1.z.number(), currentPage: zod_1.z.number(), previousPage: zod_1.z.number(), nextPage: zod_1.z.number(), currentOffset: zod_1.z.number(), previousOffset: zod_1.z.number(), nextOffset: zod_1.z.number(), lastOffset: zod_1.z.number(), firstOffset: zod_1.z.number(), }); function getPagination({ page, limit, totalCount, }) { // calculate total pages const totalPages = Math.ceil(totalCount / limit); // calculate current page let currentPage = page; // ensure current page isn't out of range if (currentPage < 1) currentPage = 1; else if (currentPage > totalPages) currentPage = totalPages; // calculate previous page let previousPage = currentPage - 1; if (previousPage < 1) previousPage = 1; // calculate next page let nextPage = currentPage + 1; if (nextPage > totalPages) nextPage = totalPages; // calculate current offset let currentOffset = (currentPage - 1) * limit; // ensure current offset isn't out of range if (currentOffset < 0) currentOffset = 0; else if (currentOffset > totalCount) currentOffset = totalCount - 1; // calculate previous offset let previousOffset = (previousPage - 1) * limit; if (previousOffset < 0) previousOffset = 0; else if (previousOffset > totalCount) previousOffset = totalCount - 1; // calculate next offset let nextOffset = (nextPage - 1) * limit; if (nextOffset < 0) nextOffset = 0; else if (nextOffset > totalCount) nextOffset = totalCount - 1; // calculate last offset let lastOffset = (totalPages - 1) * limit; if (lastOffset < 0) lastOffset = 0; else if (lastOffset > totalCount) lastOffset = totalCount - 1; // return pagination object return { firstPage: 1, totalPages, currentPage, previousPage, nextPage, currentOffset, previousOffset, nextOffset, lastOffset, firstOffset: 0, }; } exports.getPagination = getPagination; //# sourceMappingURL=get-pagination.js.map