getMetricDatasetQueryExtras.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import type {Location} from 'history';
  2. import type {Organization} from 'sentry/types/organization';
  3. import {hasOnDemandMetricAlertFeature} from 'sentry/utils/onDemandMetrics/features';
  4. import {decodeScalar} from 'sentry/utils/queryString';
  5. import {getMEPAlertsDataset} from 'sentry/views/alerts/wizard/options';
  6. import type {MetricRule} from '../types';
  7. export function getMetricDatasetQueryExtras({
  8. organization,
  9. location,
  10. dataset,
  11. newAlertOrQuery,
  12. useOnDemandMetrics,
  13. }: {
  14. dataset: MetricRule['dataset'];
  15. newAlertOrQuery: boolean;
  16. organization: Organization;
  17. location?: Location;
  18. useOnDemandMetrics?: boolean;
  19. }) {
  20. const hasMetricDataset =
  21. hasOnDemandMetricAlertFeature(organization) ||
  22. organization.features.includes('mep-rollout-flag');
  23. const disableMetricDataset =
  24. decodeScalar(location?.query?.disableMetricDataset) === 'true';
  25. const queryExtras: Record<string, string> = {};
  26. if (hasMetricDataset && !disableMetricDataset) {
  27. queryExtras.dataset = getMEPAlertsDataset(dataset, newAlertOrQuery);
  28. }
  29. if (location?.query?.aggregate?.includes('ai.total')) {
  30. queryExtras.dataset = 'spansMetrics';
  31. queryExtras.query = '';
  32. }
  33. if (useOnDemandMetrics) {
  34. queryExtras.useOnDemandMetrics = 'true';
  35. }
  36. return queryExtras;
  37. }