From b4b83e5c757e303bf8cecfe628f0e67c88cd523a Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Tue, 29 Aug 2023 23:58:06 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Reworked=20the=20jobResults=20ag?= =?UTF-8?q?gregation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/jobqueue.service.ts | 57 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/services/jobqueue.service.ts b/services/jobqueue.service.ts index 689845d..348e6d8 100644 --- a/services/jobqueue.service.ts +++ b/services/jobqueue.service.ts @@ -177,8 +177,12 @@ export default class JobQueueService extends Service { sessionId: "$sessionId", status: "$status", }, - earliestTimestamp: { $min: "$timestamp" }, - count: { $sum: 1 }, + earliestTimestamp: { + $min: "$timestamp", + }, + count: { + $sum: 1, + }, }, }, { @@ -193,6 +197,55 @@ export default class JobQueueService extends Service { }, }, }, + { + $project: { + _id: 0, + sessionId: "$_id", + completedJobs: { + $reduce: { + input: "$statuses", + initialValue: 0, + in: { + $sum: [ + "$$value", + { + $cond: [ + { + $eq: ["$$this.status", "completed"], + }, + "$$this.count", + 0, + ], + }, + ], + }, + }, + }, + failedJobs: { + $reduce: { + input: "$statuses", + initialValue: 0, + in: { + $sum: [ + "$$value", + { + $cond: [ + { + $eq: ["$$this.status", "failed"], + }, + "$$this.count", + 0, + ], + }, + ], + }, + }, + }, + earliestTimestamp: { + $min: "$statuses.earliestTimestamp", + }, + }, + }, ]); }, },