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:
parent
cfbaa92539
commit
e4681fbbb2
@ -110,16 +110,27 @@ export async function deleteBroadcast(id: string, productId: string): Promise<bo
|
|||||||
export async function updateBroadcastMetrics(
|
export async function updateBroadcastMetrics(
|
||||||
id: string,
|
id: string,
|
||||||
productId: string,
|
productId: string,
|
||||||
metrics: Partial<Broadcast['metrics']>
|
increments: Partial<Broadcast['metrics']>
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const container = getContainer('broadcasts');
|
const container = getContainer('broadcasts');
|
||||||
|
|
||||||
const existing = await getBroadcast(id, productId);
|
const existing = await getBroadcast(id, productId);
|
||||||
if (!existing) return;
|
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 = {
|
const updated: Broadcast = {
|
||||||
...existing,
|
...existing,
|
||||||
metrics: { ...existing.metrics, ...metrics },
|
metrics: updatedMetrics,
|
||||||
updatedAt: new Date().toISOString(),
|
updatedAt: new Date().toISOString(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user