Files
grafana/public/app/features/query-library/api/mappers.ts
Ashley Harrison 30bf2bcde1 API client generation: create a central getAPIBaseURL function (#99961)
* create a getAPIBaseURL function

* use base url in iam api
2025-02-03 13:05:47 +00:00

55 lines
1.7 KiB
TypeScript

import { v4 as uuidv4 } from 'uuid';
import { AnnoKeyCreatedBy } from '../../apiserver/types';
import { AddQueryTemplateCommand, QueryTemplate } from '../types';
import { ListQueryTemplateApiResponse, QueryTemplate as QT } from './endpoints.gen';
export const convertDataQueryResponseToQueryTemplates = (result: ListQueryTemplateApiResponse): QueryTemplate[] => {
if (!result.items) {
return [];
}
return result.items.map((spec) => {
return {
uid: spec.metadata?.name ?? '',
title: spec.spec?.title ?? '',
targets:
spec.spec?.targets.map((target) => ({
...target.properties,
refId: target.properties.refId ?? '',
})) ?? [],
createdAtTimestamp: new Date(spec.metadata?.creationTimestamp ?? '').getTime(),
user: {
uid: spec.metadata?.annotations?.[AnnoKeyCreatedBy] ?? '',
},
};
});
};
export const convertAddQueryTemplateCommandToDataQuerySpec = (addQueryTemplateCommand: AddQueryTemplateCommand): QT => {
const { title, targets } = addQueryTemplateCommand;
return {
metadata: {
/**
* Server will append to whatever is passed here, but just to be safe we generate a uuid
* More info https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#idempotency
*/
generateName: uuidv4(),
},
spec: {
title: title,
vars: [], // TODO: Detect variables in #86838
targets: targets.map((dataQuery) => ({
variables: {},
properties: {
...dataQuery,
datasource: {
...dataQuery.datasource,
type: dataQuery.datasource?.type ?? '',
},
},
})),
},
};
};