From e4681fbbb2625fa59cdfe1e781280799ca867619 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Mon, 2 Mar 2026 23:56:09 -0800 Subject: [PATCH] fix(broadcasts): Fix metrics increment bug in updateBroadcastMetrics - Change from merge pattern to explicit increment pattern - Each metric field is properly incremented instead of overwritten - Prevents race condition data loss --- .../src/modules/broadcasts/repository.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/services/platform-service/src/modules/broadcasts/repository.ts b/services/platform-service/src/modules/broadcasts/repository.ts index 63267891..80771748 100644 --- a/services/platform-service/src/modules/broadcasts/repository.ts +++ b/services/platform-service/src/modules/broadcasts/repository.ts @@ -110,16 +110,27 @@ export async function deleteBroadcast(id: string, productId: string): Promise + increments: Partial ): Promise { const container = getContainer('broadcasts'); const existing = await getBroadcast(id, productId); if (!existing) return; + // Increment metrics properly + const updatedMetrics: Broadcast['metrics'] = { + targetedCount: existing.metrics.targetedCount + (increments.targetedCount ?? 0), + sentCount: existing.metrics.sentCount + (increments.sentCount ?? 0), + deliveredCount: existing.metrics.deliveredCount + (increments.deliveredCount ?? 0), + openedCount: existing.metrics.openedCount + (increments.openedCount ?? 0), + clickedCount: existing.metrics.clickedCount + (increments.clickedCount ?? 0), + dismissedCount: existing.metrics.dismissedCount + (increments.dismissedCount ?? 0), + convertedCount: existing.metrics.convertedCount + (increments.convertedCount ?? 0), + }; + const updated: Broadcast = { ...existing, - metrics: { ...existing.metrics, ...metrics }, + metrics: updatedMetrics, updatedAt: new Date().toISOString(), };