metricsCompatibilityQuery.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import omit from 'lodash/omit';
  2. import EventView from 'sentry/utils/discover/eventView';
  3. import GenericDiscoverQuery, {
  4. DiscoverQueryProps,
  5. GenericChildrenProps,
  6. } from 'sentry/utils/discover/genericDiscoverQuery';
  7. import useApi from 'sentry/utils/useApi';
  8. export interface MetricsCompatibilityData {
  9. compatible_projects?: number[];
  10. dynamic_sampling_projects?: number[];
  11. }
  12. type QueryProps = Omit<DiscoverQueryProps, 'eventView' | 'api'> & {
  13. children: (props: GenericChildrenProps<MetricsCompatibilityData>) => React.ReactNode;
  14. eventView: EventView;
  15. };
  16. function getRequestPayload({
  17. eventView,
  18. location,
  19. }: Pick<DiscoverQueryProps, 'eventView' | 'location'>) {
  20. return omit(eventView.getEventsAPIPayload(location), [
  21. 'field',
  22. 'sort',
  23. 'per_page',
  24. 'query',
  25. ]);
  26. }
  27. export default function MetricsCompatibilityQuery({children, ...props}: QueryProps) {
  28. const api = useApi();
  29. return (
  30. <GenericDiscoverQuery<MetricsCompatibilityData, {}>
  31. route="metrics-compatibility-sums"
  32. getRequestPayload={getRequestPayload}
  33. {...props}
  34. api={api}
  35. >
  36. {({tableData, ...rest}) => {
  37. return children({
  38. tableData,
  39. ...rest,
  40. });
  41. }}
  42. </GenericDiscoverQuery>
  43. );
  44. }