From 09854147d1775b9e4e66b4d1bcb6cfe38cba4bd8 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Wed, 14 Feb 2024 00:51:16 +0100 Subject: [PATCH] feat: Extend renderer functionality to work with pagination --- packages/backend/src/helpers/renderer.js | 27 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/backend/src/helpers/renderer.js b/packages/backend/src/helpers/renderer.js index fcc6e6a0..50865256 100644 --- a/packages/backend/src/helpers/renderer.js +++ b/packages/backend/src/helpers/renderer.js @@ -1,14 +1,27 @@ +const isPaginated = (object) => + object?.pageInfo && + object?.totalCount !== undefined && + Array.isArray(object?.records); + +const isArray = (object) => + Array.isArray(object) || Array.isArray(object?.records); + +const totalCount = (object) => + isPaginated(object) ? object.totalCount : isArray(object) ? object.length : 1; + const renderObject = (response, object) => { - const isArray = Array.isArray(object); + const data = isPaginated(object) ? object.records : object; const computedPayload = { - data: object, + data, meta: { - type: object.constructor.name, - count: isArray ? object.length : 1, - isArray, - currentPage: null, - totalPages: null, + type: isPaginated(object) + ? object.records[0].constructor.name + : object.constructor.name, + count: totalCount(object), + isArray: isArray(object), + currentPage: isPaginated(object) ? object.pageInfo.currentPage : null, + totalPages: isPaginated(object) ? object.pageInfo.totalPages : null, }, };