From b89a4d58d986721d37c9d22fc0690c5d641b146d Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Wed, 14 Feb 2024 00:51:48 +0100 Subject: [PATCH] feat: Add pagination for REST endpoints --- .../backend/src/helpers/pagination-rest.js | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 packages/backend/src/helpers/pagination-rest.js diff --git a/packages/backend/src/helpers/pagination-rest.js b/packages/backend/src/helpers/pagination-rest.js new file mode 100644 index 00000000..89239d85 --- /dev/null +++ b/packages/backend/src/helpers/pagination-rest.js @@ -0,0 +1,25 @@ +const paginateRest = async (query, page) => { + const pageSize = 10; + + page = parseInt(page, 10); + + if (isNaN(page) || page < 1) { + page = 1; + } + + const [records, count] = await Promise.all([ + query.limit(pageSize).offset((page - 1) * pageSize), + query.resultSize(), + ]); + + return { + pageInfo: { + currentPage: page, + totalPages: Math.ceil(count / pageSize), + }, + totalCount: count, + records, + }; +}; + +export default paginateRest;