From 216d34375d7a95a48a0d7c6021ca298f65411ccf Mon Sep 17 00:00:00 2001 From: Kristina Durivage Date: Tue, 2 Jul 2024 18:21:56 -0500 Subject: [PATCH] Get PUT to work although the edit doesnt apply yet --- .../explore/QueryLibrary/QueryTemplateForm.tsx | 13 +++++-------- .../explore/QueryLibrary/QueryTemplatesList.tsx | 1 + .../QueryLibrary/QueryTemplatesTable/types.ts | 2 ++ public/app/features/query-library/api/factory.ts | 13 +++++++------ public/app/features/query-library/api/mappers.ts | 7 ++++--- public/app/features/query-library/types.ts | 7 +++---- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/public/app/features/explore/QueryLibrary/QueryTemplateForm.tsx b/public/app/features/explore/QueryLibrary/QueryTemplateForm.tsx index b9fe287f85d..643ca5427a9 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplateForm.tsx +++ b/public/app/features/explore/QueryLibrary/QueryTemplateForm.tsx @@ -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) { diff --git a/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx b/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx index eed3e100131..dff828da3d0 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx +++ b/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx @@ -46,6 +46,7 @@ export function QueryTemplatesList() { query: queryTemplate.targets[0], description: queryTemplate.title, user: queryTemplate.user, + fullSpec: queryTemplate.fullSpec, }; }); diff --git a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts index b9ca932e980..99a98a97697 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts +++ b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts @@ -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; }; diff --git a/public/app/features/query-library/api/factory.ts b/public/app/features/query-library/api/factory.ts index e7188ac4898..6fd2d0011ab 100644 --- a/public/app/features/query-library/api/factory.ts +++ b/public/app/features/query-library/api/factory.ts @@ -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({ 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({ + editQueryTemplate: builder.mutation({ query: (editQueryTemplateCommand) => ({ - url: `${editQueryTemplateCommand.uid}`, + url: `${editQueryTemplateCommand.metadata.name}`, method: 'PUT', - data: convertQueryTemplateCommandToDataQuerySpec(editQueryTemplateCommand), + data: editQueryTemplateCommand, }), invalidatesTags: ['QueryTemplatesList'], }), diff --git a/public/app/features/query-library/api/mappers.ts b/public/app/features/query-library/api/mappers.ts index 2a9f8ebd255..08bd081ed13 100644 --- a/public/app/features/query-library/api/mappers.ts +++ b/public/app/features/query-library/api/mappers.ts @@ -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 { diff --git a/public/app/features/query-library/types.ts b/public/app/features/query-library/types.ts index 3b9737e5435..274857de25d 100644 --- a/public/app/features/query-library/types.ts +++ b/public/app/features/query-library/types.ts @@ -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; };