1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import {Client, ResponseMeta} from 'sentry/api';
- import {getInterval} from 'sentry/components/charts/utils';
- import {normalizeDateTimeParams} from 'sentry/components/organizations/pageFilters/parse';
- import {DateString, MetricsApiResponse, Organization} from 'sentry/types';
- import {defined} from 'sentry/utils';
- export type DoMetricsRequestOptions = {
- field: string[];
- orgSlug: Organization['slug'];
- cursor?: string;
- end?: DateString;
- environment?: Readonly<string[]>;
- groupBy?: string[];
- includeAllArgs?: boolean;
- includeSeries?: number;
- includeTotals?: number;
- interval?: string;
- limit?: number;
- orderBy?: string;
- project?: Readonly<number[]>;
- query?: string;
- start?: DateString;
- statsPeriod?: string | null;
- statsPeriodEnd?: string;
- statsPeriodStart?: string;
- };
- export const doMetricsRequest = (
- api: Client,
- {
- field,
- orgSlug,
- cursor,
- environment,
- groupBy,
- includeSeries,
- includeTotals,
- interval,
- limit,
- orderBy,
- project,
- query,
- includeAllArgs = false,
- statsPeriodStart,
- statsPeriodEnd,
- ...dateTime
- }: DoMetricsRequestOptions
- ): Promise<MetricsApiResponse | [MetricsApiResponse, string, ResponseMeta]> => {
- const {start, end, statsPeriod} = normalizeDateTimeParams(dateTime, {
- allowEmptyPeriod: true,
- });
- const urlQuery = Object.fromEntries(
- Object.entries({
- field: field.filter(f => !!f),
- cursor,
- end,
- environment,
- groupBy: groupBy?.filter(g => !!g),
- includeSeries,
- includeTotals,
- interval: interval || getInterval({start, end, period: statsPeriod}),
- query: query || undefined,
- per_page: limit,
- project,
- orderBy,
- start,
- statsPeriod,
- statsPeriodStart,
- statsPeriodEnd,
- }).filter(([, value]) => defined(value) && value !== '')
- );
- const pathname = `/organizations/${orgSlug}/metrics/data/`;
- return api.requestPromise(pathname, {includeAllArgs, query: urlQuery});
- };
|