Get PUT to work although the edit doesnt apply yet

This commit is contained in:
Kristina Durivage
2024-07-02 18:21:56 -05:00
parent 48beb71500
commit 216d34375d
6 changed files with 22 additions and 21 deletions
@@ -10,7 +10,8 @@ import { Input } from '@grafana/ui/src/components/Input/Input';
import { Trans, t } from 'app/core/internationalization';
import { getQueryDisplayText } from 'app/core/utils/richHistory';
import { useAddQueryTemplateMutation, useEditQueryTemplateMutation } from 'app/features/query-library';
import { AddQueryTemplateCommand, EditQueryTemplateCommand } from 'app/features/query-library/types';
import { DataQuerySpec } from 'app/features/query-library/api/types';
import { AddQueryTemplateCommand } from 'app/features/query-library/types';
import { useDatasource } from '../QueryLibrary/utils/useDatasource';
@@ -76,7 +77,7 @@ export const QueryTemplateForm = ({ onCancel, onSave, queryToAdd, templateData }
});
};
const handleEditQueryTemplate = async (EditQueryTemplateCommand: EditQueryTemplateCommand) => {
const handleEditQueryTemplate = async (EditQueryTemplateCommand: DataQuerySpec) => {
return editQueryTemplate(EditQueryTemplateCommand)
.unwrap()
.then(() => {
@@ -104,12 +105,8 @@ export const QueryTemplateForm = ({ onCancel, onSave, queryToAdd, templateData }
const temporaryDefaultTitle =
data.description || t('explore.query-library.default-description', 'Public', { timestamp: timestamp });
if (templateData?.uid) {
handleEditQueryTemplate({
uid: templateData.uid,
title: temporaryDefaultTitle,
targets: [templateData.query!],
}).then((isSuccess) => {
if (templateData?.fullSpec) {
handleEditQueryTemplate(templateData.fullSpec).then((isSuccess) => {
onSave(isSuccess);
});
} else if (queryToAdd) {
@@ -46,6 +46,7 @@ export function QueryTemplatesList() {
query: queryTemplate.targets[0],
description: queryTemplate.title,
user: queryTemplate.user,
fullSpec: queryTemplate.fullSpec,
};
});
@@ -1,4 +1,5 @@
import { DataQuery, DataSourceRef } from '@grafana/schema';
import { DataQuerySpec } from 'app/features/query-library/api/types';
export type QueryTemplateRow = {
index: string;
@@ -9,4 +10,5 @@ export type QueryTemplateRow = {
createdAtTimestamp?: number;
user?: string;
uid?: string;
fullSpec?: DataQuerySpec;
};
@@ -1,9 +1,10 @@
import { createApi } from '@reduxjs/toolkit/query/react';
import { AddQueryTemplateCommand, DeleteQueryTemplateCommand, QueryTemplate, EditQueryTemplateCommand } from '../types';
import { AddQueryTemplateCommand, DeleteQueryTemplateCommand, QueryTemplate } from '../types';
import { convertQueryTemplateCommandToDataQuerySpec, convertDataQueryResponseToQueryTemplates } from './mappers';
import { convertAddQueryTemplateCommandToDataQuerySpec, convertDataQueryResponseToQueryTemplates } from './mappers';
import { baseQuery } from './query';
import { DataQuerySpec } from './types';
export const queryLibraryApi = createApi({
baseQuery,
@@ -17,7 +18,7 @@ export const queryLibraryApi = createApi({
addQueryTemplate: builder.mutation<QueryTemplate, AddQueryTemplateCommand>({
query: (addQueryTemplateCommand) => ({
method: 'POST',
data: convertQueryTemplateCommandToDataQuerySpec(addQueryTemplateCommand),
data: convertAddQueryTemplateCommandToDataQuerySpec(addQueryTemplateCommand),
}),
invalidatesTags: ['QueryTemplatesList'],
}),
@@ -28,11 +29,11 @@ export const queryLibraryApi = createApi({
}),
invalidatesTags: ['QueryTemplatesList'],
}),
editQueryTemplate: builder.mutation<void, EditQueryTemplateCommand>({
editQueryTemplate: builder.mutation<void, DataQuerySpec>({
query: (editQueryTemplateCommand) => ({
url: `${editQueryTemplateCommand.uid}`,
url: `${editQueryTemplateCommand.metadata.name}`,
method: 'PUT',
data: convertQueryTemplateCommandToDataQuerySpec(editQueryTemplateCommand),
data: editQueryTemplateCommand,
}),
invalidatesTags: ['QueryTemplatesList'],
}),
@@ -1,4 +1,4 @@
import { AddQueryTemplateCommand, EditQueryTemplateCommand, QueryTemplate } from '../types';
import { AddQueryTemplateCommand, QueryTemplate } from '../types';
import { API_VERSION, QueryTemplateKinds } from './query';
import { CREATED_BY_KEY, DataQuerySpec, DataQuerySpecResponse, DataQueryTarget } from './types';
@@ -36,12 +36,13 @@ export const convertDataQueryResponseToQueryTemplates = (result: DataQuerySpecRe
targets: spec.spec.targets.map((target: DataQueryTarget) => target.properties),
createdAtTimestamp: new Date(spec.metadata.creationTimestamp || '').getTime(),
user: parseCreatedByValue(spec.metadata?.annotations?.[CREATED_BY_KEY]),
fullSpec: spec,
};
});
};
export const convertQueryTemplateCommandToDataQuerySpec = (
addQueryTemplateCommand: AddQueryTemplateCommand | EditQueryTemplateCommand
export const convertAddQueryTemplateCommandToDataQuerySpec = (
addQueryTemplateCommand: AddQueryTemplateCommand
): DataQuerySpec => {
const { title, targets } = addQueryTemplateCommand;
return {
+3 -4
View File
@@ -1,11 +1,14 @@
import { DataQuery } from '@grafana/schema';
import { DataQuerySpec } from './api/types';
export type QueryTemplate = {
uid: string;
title: string;
targets: DataQuery[];
createdAtTimestamp: number;
user?: string;
fullSpec: DataQuerySpec;
};
export type AddQueryTemplateCommand = {
@@ -13,10 +16,6 @@ export type AddQueryTemplateCommand = {
targets: DataQuery[];
};
export interface EditQueryTemplateCommand extends AddQueryTemplateCommand {
uid: string;
}
export type DeleteQueryTemplateCommand = {
uid: string;
};