import {MetricsApiResponse} from 'sentry/types'; import {TableData} from '../discover/discoverQuery'; import {getAggregateArg} from '../discover/fields'; import {METRIC_TO_COLUMN_TYPE} from './fields'; function changeObjectValuesToTypes( obj: Record | undefined ) { return Object.keys(obj ?? {}).reduce((acc, key) => { acc[key] = METRIC_TO_COLUMN_TYPE[getAggregateArg(key) ?? key] ?? 'string'; return acc; }, {}); } export function transformMetricsResponseToTable( response: MetricsApiResponse | null ): TableData { const data = response?.groups.map((group, index) => ({ id: String(index), ...group.by, ...group.totals, })) ?? []; const singleRow = response?.groups[0]; // TODO(metrics): these should come from the API in the future const meta = { ...changeObjectValuesToTypes(singleRow?.by), ...changeObjectValuesToTypes(singleRow?.totals), }; return {meta, data}; }