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
This commit is contained in:
saravanakumardb1 2026-03-02 23:56:09 -08:00
parent cfbaa92539
commit e4681fbbb2

View File

@ -110,16 +110,27 @@ export async function deleteBroadcast(id: string, productId: string): Promise<bo
export async function updateBroadcastMetrics(
id: string,
productId: string,
metrics: Partial<Broadcast['metrics']>
increments: Partial<Broadcast['metrics']>
): Promise<void> {
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(),
};