From 3578f6b8491afa5d3220096fff2ce68d160ba913 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Thu, 15 Feb 2024 02:15:44 +0100 Subject: [PATCH] feat: Extend renderer to use serializers --- packages/backend/src/helpers/renderer.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/helpers/renderer.js b/packages/backend/src/helpers/renderer.js index 50865256..a465e73d 100644 --- a/packages/backend/src/helpers/renderer.js +++ b/packages/backend/src/helpers/renderer.js @@ -1,3 +1,5 @@ +import serializers from '../serializers/index.js'; + const isPaginated = (object) => object?.pageInfo && object?.totalCount !== undefined && @@ -10,14 +12,23 @@ const totalCount = (object) => isPaginated(object) ? object.totalCount : isArray(object) ? object.length : 1; const renderObject = (response, object) => { - const data = isPaginated(object) ? object.records : object; + let data = isPaginated(object) ? object.records : object; + const type = isPaginated(object) + ? object.records[0].constructor.name + : object.constructor.name; + + const serializer = serializers[type]; + + if (serializer) { + data = Array.isArray(data) + ? data.map((item) => serializer(item)) + : serializer(data); + } const computedPayload = { data, meta: { - type: isPaginated(object) - ? object.records[0].constructor.name - : object.constructor.name, + type, count: totalCount(object), isArray: isArray(object), currentPage: isPaginated(object) ? object.pageInfo.currentPage : null,