useQueuesByTransactionQuery.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {decodeScalar} from 'sentry/utils/queryString';
  2. import {MutableSearch} from 'sentry/utils/tokenizeSearch';
  3. import {useLocation} from 'sentry/utils/useLocation';
  4. import {DEFAULT_QUERY_FILTER} from 'sentry/views/performance/queues/settings';
  5. import {useSpanMetrics} from 'sentry/views/starfish/queries/useSpanMetrics';
  6. import {QueryParameterNames} from 'sentry/views/starfish/views/queryParameters';
  7. type Props = {
  8. destination?: string;
  9. enabled?: boolean;
  10. };
  11. export function useQueueByTransactionQuery({destination, enabled}: Props) {
  12. const location = useLocation();
  13. const cursor = decodeScalar(location.query?.[QueryParameterNames.DOMAINS_CURSOR]);
  14. const mutableSearch = new MutableSearch(DEFAULT_QUERY_FILTER);
  15. if (destination) {
  16. // TODO: This should filter by destination, not transaction
  17. mutableSearch.addFilterValue('transaction', destination);
  18. }
  19. const response = useSpanMetrics({
  20. search: mutableSearch,
  21. fields: [
  22. 'transaction',
  23. 'count()',
  24. 'count_op(queue.submit.celery)',
  25. 'count_op(queue.task.celery)',
  26. 'sum(span.self_time)',
  27. 'avg(span.self_time)',
  28. 'avg_if(span.self_time,span.op,queue.submit.celery)',
  29. 'avg_if(span.self_time,span.op,queue.task.celery)',
  30. ],
  31. enabled,
  32. sorts: [],
  33. limit: 10,
  34. cursor,
  35. referrer: 'api.performance.queues.destination-summary',
  36. });
  37. return response;
  38. }