12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import {decodeScalar} from 'sentry/utils/queryString';
- import {MutableSearch} from 'sentry/utils/tokenizeSearch';
- import {useLocation} from 'sentry/utils/useLocation';
- import {DEFAULT_QUERY_FILTER} from 'sentry/views/performance/queues/settings';
- import {useSpanMetrics} from 'sentry/views/starfish/queries/useSpanMetrics';
- import {QueryParameterNames} from 'sentry/views/starfish/views/queryParameters';
- type Props = {
- destination?: string;
- enabled?: boolean;
- };
- export function useQueuesByTransactionQuery({destination, enabled}: Props) {
- const location = useLocation();
- const cursor = decodeScalar(location.query?.[QueryParameterNames.TRANSACTIONS_CURSOR]);
- const mutableSearch = new MutableSearch(DEFAULT_QUERY_FILTER);
- if (destination) {
- // TODO: This should filter by destination, not transaction.
- // We are using transaction for now as a proxy to demo some functionality until destination becomes a filterable tag.
- mutableSearch.addFilterValue('transaction', destination);
- }
- const response = useSpanMetrics({
- search: mutableSearch,
- fields: [
- 'transaction',
- 'count()',
- 'count_op(queue.submit.celery)',
- 'count_op(queue.task.celery)',
- 'sum(span.self_time)',
- 'avg(span.self_time)',
- 'avg_if(span.self_time,span.op,queue.submit.celery)',
- 'avg_if(span.self_time,span.op,queue.task.celery)',
- ],
- enabled,
- sorts: [],
- limit: 10,
- cursor,
- referrer: 'api.performance.queues.destination-summary',
- });
- return response;
- }
|