2024-10-03 16:24:39 -06:00
|
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
|
2025-01-31 17:12:55 +00:00
|
|
|
import { AnnoKeyCreatedBy } from '../../apiserver/types';
|
2024-05-23 10:38:17 +02:00
|
|
|
import { AddQueryTemplateCommand, QueryTemplate } from '../types';
|
2024-05-14 10:05:39 +02:00
|
|
|
|
2025-01-29 18:05:40 +02:00
|
|
|
import { ListQueryTemplateApiResponse, QueryTemplate as QT } from './endpoints.gen';
|
2024-06-27 09:46:49 -05:00
|
|
|
|
2025-01-21 17:25:45 +00:00
|
|
|
export const convertDataQueryResponseToQueryTemplates = (result: ListQueryTemplateApiResponse): QueryTemplate[] => {
|
2024-05-14 10:05:39 +02:00
|
|
|
if (!result.items) {
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
return result.items.map((spec) => {
|
|
|
|
return {
|
2025-01-21 17:25:45 +00:00
|
|
|
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(),
|
2024-10-08 07:12:33 -06:00
|
|
|
user: {
|
2025-01-31 17:12:55 +00:00
|
|
|
uid: spec.metadata?.annotations?.[AnnoKeyCreatedBy] ?? '',
|
2024-10-08 07:12:33 -06:00
|
|
|
},
|
2024-05-14 10:05:39 +02:00
|
|
|
};
|
|
|
|
});
|
|
|
|
};
|
2024-05-23 10:38:17 +02:00
|
|
|
|
2025-01-29 18:05:40 +02:00
|
|
|
export const convertAddQueryTemplateCommandToDataQuerySpec = (addQueryTemplateCommand: AddQueryTemplateCommand): QT => {
|
2024-05-23 10:38:17 +02:00
|
|
|
const { title, targets } = addQueryTemplateCommand;
|
|
|
|
return {
|
|
|
|
metadata: {
|
2024-10-03 16:24:39 -06:00
|
|
|
/**
|
|
|
|
* 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(),
|
2024-05-23 10:38:17 +02:00
|
|
|
},
|
|
|
|
spec: {
|
|
|
|
title: title,
|
|
|
|
vars: [], // TODO: Detect variables in #86838
|
|
|
|
targets: targets.map((dataQuery) => ({
|
|
|
|
variables: {},
|
2025-01-21 17:25:45 +00:00
|
|
|
properties: {
|
|
|
|
...dataQuery,
|
|
|
|
datasource: {
|
|
|
|
...dataQuery.datasource,
|
|
|
|
type: dataQuery.datasource?.type ?? '',
|
|
|
|
},
|
|
|
|
},
|
2024-05-23 10:38:17 +02:00
|
|
|
})),
|
|
|
|
},
|
|
|
|
};
|
|
|
|
};
|