From ddfdc9ee7ae38cba71cbc461622bb7eea25ff0e9 Mon Sep 17 00:00:00 2001 From: Victor Marin <36818606+mdvictor@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:02:30 +0300 Subject: [PATCH] Variables: improve performance of transformMetricFindResponse (#49360) (#51435) * improve performance of transformMetricFindResponse * use lodash uniqBy for postgres * use lodash uniqBy for mysql * use lodash uniqBy for mssql * hopefully conform to import linting rules * Added .betterer.results Co-authored-by: Dominik Prokop Co-authored-by: Victor Marin (cherry picked from commit 683f31f2c6e4f4cd997ea46b16418c230b758450) Co-authored-by: Nathaniel Saxe --- public/app/plugins/datasource/mssql/response_parser.ts | 7 +++---- public/app/plugins/datasource/mysql/response_parser.ts | 7 +++---- public/app/plugins/datasource/postgres/response_parser.ts | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/public/app/plugins/datasource/mssql/response_parser.ts b/public/app/plugins/datasource/mssql/response_parser.ts index 05a853170a6..52e2af016e3 100644 --- a/public/app/plugins/datasource/mssql/response_parser.ts +++ b/public/app/plugins/datasource/mssql/response_parser.ts @@ -1,3 +1,5 @@ +import { uniqBy } from 'lodash'; + import { AnnotationEvent, DataFrame, MetricFindValue } from '@grafana/data'; import { BackendDataSourceResponse, toDataQueryResponse, FetchResponse } from '@grafana/runtime'; @@ -29,10 +31,7 @@ export default class ResponseParser { ); } - return Array.from(new Set(values.map((v) => v.text))).map((text) => ({ - text, - value: values.find((v) => v.text === text)?.value, - })); + return uniqBy(values, 'text'); } async transformAnnotationResponse(options: any, data: BackendDataSourceResponse): Promise { diff --git a/public/app/plugins/datasource/mysql/response_parser.ts b/public/app/plugins/datasource/mysql/response_parser.ts index c4367a9c402..ff16bd60551 100644 --- a/public/app/plugins/datasource/mysql/response_parser.ts +++ b/public/app/plugins/datasource/mysql/response_parser.ts @@ -1,3 +1,5 @@ +import { uniqBy } from 'lodash'; + import { AnnotationEvent, DataFrame, MetricFindValue } from '@grafana/data'; import { BackendDataSourceResponse, FetchResponse, toDataQueryResponse } from '@grafana/runtime'; @@ -29,10 +31,7 @@ export default class ResponseParser { ); } - return Array.from(new Set(values.map((v) => v.text))).map((text) => ({ - text, - value: values.find((v) => v.text === text)?.value, - })); + return uniqBy(values, 'text'); } async transformAnnotationResponse(options: any, data: BackendDataSourceResponse): Promise { diff --git a/public/app/plugins/datasource/postgres/response_parser.ts b/public/app/plugins/datasource/postgres/response_parser.ts index 83ecc223984..c5a6e8af852 100644 --- a/public/app/plugins/datasource/postgres/response_parser.ts +++ b/public/app/plugins/datasource/postgres/response_parser.ts @@ -1,3 +1,5 @@ +import { uniqBy } from 'lodash'; + import { AnnotationEvent, DataFrame, MetricFindValue } from '@grafana/data'; import { BackendDataSourceResponse, FetchResponse, toDataQueryResponse } from '@grafana/runtime'; @@ -29,10 +31,7 @@ export default class ResponseParser { ); } - return Array.from(new Set(values.map((v) => v.text))).map((text) => ({ - text, - value: values.find((v) => v.text === text)?.value, - })); + return uniqBy(values, 'text'); } async transformAnnotationResponse(options: any, data: BackendDataSourceResponse): Promise {