2022-06-27 06:26:46 -05:00
|
|
|
import { uniqBy } from 'lodash';
|
|
|
|
|
2022-07-15 12:51:28 -05:00
|
|
|
import { DataFrame, MetricFindValue } from '@grafana/data';
|
|
|
|
import { ResponseParser } from 'app/features/plugins/sql/types';
|
2021-05-05 09:46:07 -05:00
|
|
|
|
2022-07-15 12:51:28 -05:00
|
|
|
export class MSSqlResponseParser implements ResponseParser {
|
|
|
|
transformMetricFindResponse(frame: DataFrame): MetricFindValue[] {
|
2021-05-05 09:46:07 -05:00
|
|
|
const values: MetricFindValue[] = [];
|
|
|
|
const textField = frame.fields.find((f) => f.name === '__text');
|
|
|
|
const valueField = frame.fields.find((f) => f.name === '__value');
|
2017-12-02 05:40:12 -06:00
|
|
|
|
2021-05-05 09:46:07 -05:00
|
|
|
if (textField && valueField) {
|
|
|
|
for (let i = 0; i < textField.values.length; i++) {
|
|
|
|
values.push({ text: '' + textField.values.get(i), value: '' + valueField.values.get(i) });
|
|
|
|
}
|
|
|
|
} else {
|
2021-06-09 07:18:54 -05:00
|
|
|
values.push(
|
|
|
|
...frame.fields
|
|
|
|
.flatMap((f) => f.values.toArray())
|
|
|
|
.map((v) => ({
|
|
|
|
text: v,
|
|
|
|
}))
|
|
|
|
);
|
2017-12-02 05:40:12 -06:00
|
|
|
}
|
|
|
|
|
2022-06-27 06:26:46 -05:00
|
|
|
return uniqBy(values, 'text');
|
2017-12-02 05:40:12 -06:00
|
|
|
}
|
|
|
|
}
|