diff --git a/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts b/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts index e83c52b9aa..b61f9e400e 100644 --- a/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts +++ b/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts @@ -37,20 +37,19 @@ export interface RequestMetricsParams { namespace?: string; } -export interface RequestMetrics { - (query: string, params?: RequestMetricsParams): Promise; - (query: string[], params?: RequestMetricsParams): Promise; - (query: Record>>, params?: RequestMetricsParams): Promise>; -} +export type RequestMetrics = ReturnType; const requestMetricsInjectable = getInjectable({ id: "request-metrics", instantiate: (di) => { const apiBase = di.inject(apiBaseInjectable); - return (async (query: object, params: RequestMetricsParams = {}) => { - const { range = 3600, step = 60, namespace } = params; - let { start, end } = params; + function requestMetrics(query: string, params?: RequestMetricsParams): Promise; + function requestMetrics(query: string[], params?: RequestMetricsParams): Promise; + function requestMetrics(query: Record>>, params?: RequestMetricsParams): Promise>; + async function requestMetrics(query: string | string[] | Partial>>>, params?: RequestMetricsParams): Promise>> { + const { range = 3600, step = 60, namespace } = params ?? {}; + let { start, end } = params ?? {}; if (!start && !end) { const now = getSecondsFromUnixEpoch(); @@ -59,14 +58,18 @@ const requestMetricsInjectable = getInjectable({ end = now; } - return apiBase.post("/metrics", { + const res = await apiBase.post("/metrics", { data: query, query: { start, end, step, "kubernetes_namespace": namespace, }, }); - }) as RequestMetrics; + + return res; + } + + return requestMetrics; }, });