Files
2024-02-15 17:01:50 +00:00

26 lines
850 B
TypeScript

import type {MonitorBucketEnvMapping} from 'sentry/views/monitors/components/overviewTimeline/types';
import {CHECKIN_STATUS_PRECEDENT} from 'sentry/views/monitors/utils/constants';
/**
* Given two env mappings e.g. {prod: {ok: 1, missed: 0, etc..}}
* combines job status counts
*/
export function mergeEnvMappings(
envMappingA: MonitorBucketEnvMapping,
envMappingB: MonitorBucketEnvMapping
) {
const combinedEnvs = new Set([
...Object.keys(envMappingA),
...Object.keys(envMappingB),
]);
return [...combinedEnvs].reduce((mergedEnvs, env) => {
const mergedStatusCounts = {};
for (const status of CHECKIN_STATUS_PRECEDENT) {
mergedStatusCounts[status] =
(envMappingA[env]?.[status] ?? 0) + (envMappingB[env]?.[status] ?? 0);
}
mergedEnvs[env] = mergedStatusCounts;
return mergedEnvs;
}, {});
}