From 8410d179cce12d931a8b2c9aebe3e3aa131349c3 Mon Sep 17 00:00:00 2001 From: Pedro Howat Date: Fri, 1 Nov 2024 15:03:23 -0300 Subject: [PATCH] IH2CtHI2 . calculate object sizes in chunks --- .../kwik/controllers/kwik.controller.ts | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/api/integrations/kwik/controllers/kwik.controller.ts b/src/api/integrations/kwik/controllers/kwik.controller.ts index 833332c4..2812c633 100644 --- a/src/api/integrations/kwik/controllers/kwik.controller.ts +++ b/src/api/integrations/kwik/controllers/kwik.controller.ts @@ -230,15 +230,28 @@ export class KwikController { newVal: 0, }; } else { - const userMessages = await messages - .find({ owner: instanceName, messageTimestamp: { $gte: messageTimestamp } }) - .toArray(); - + let ended = false; + const batchSize = 10000; let totalSize = 0; + let offset = 0; - userMessages.forEach(function (doc) { - totalSize += calculateObjectSize(doc); - }); + while (!ended) { + const userMessages = await messages + .find({ owner: instanceName, messageTimestamp: { $gte: messageTimestamp } }) + .skip(offset) + .limit(batchSize) + .toArray(); + + userMessages.forEach(function (doc) { + totalSize += calculateObjectSize(doc); + }); + + if (userMessages.length < batchSize) { + ended = true; + } else { + offset += batchSize; + } + } return { chatCount: chatCount[0].rowCount,