2025-04-01 10:38:02 +09:00

33 lines
700 B
TypeScript

import { getNextRefId } from '@grafana/data';
import { DataQuery } from '@grafana/schema';
/**
* Makes sure all the queries have unique (and valid) refIds
*/
export function withUniqueRefIds(queries: DataQuery[]): DataQuery[] {
const refIds = new Set<string>(queries.map((query) => query.refId).filter(Boolean));
if (refIds.size === queries.length) {
return queries;
}
refIds.clear();
return queries.map((query) => {
if (query.refId && !refIds.has(query.refId)) {
refIds.add(query.refId);
return query;
}
const refId = getNextRefId(queries);
refIds.add(refId);
const newQuery = {
...query,
refId,
};
return newQuery;
});
}