From 38f25a0bf56cc1727472dd9a2755d5206890fbce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Mon, 21 Nov 2022 19:46:04 +0100 Subject: [PATCH] MS/My/PostgresSQL: Migrate annotation query (#58847) --- .../plugins/sql/components/QueryEditor.tsx | 4 +-- .../plugins/sql/components/QueryHeader.tsx | 4 +-- .../plugins/sql/datasource/SqlDatasource.ts | 7 ++++- public/app/features/plugins/sql/defaults.ts | 4 ++- public/app/features/plugins/sql/types.ts | 7 +---- .../features/plugins/sql/utils/migration.ts | 28 +++++++++++++++++++ 6 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 public/app/features/plugins/sql/utils/migration.ts diff --git a/public/app/features/plugins/sql/components/QueryEditor.tsx b/public/app/features/plugins/sql/components/QueryEditor.tsx index 961417552e3..89af73cf12c 100644 --- a/public/app/features/plugins/sql/components/QueryEditor.tsx +++ b/public/app/features/plugins/sql/components/QueryEditor.tsx @@ -2,11 +2,11 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useAsync } from 'react-use'; import { QueryEditorProps } from '@grafana/data'; -import { Space } from '@grafana/experimental'; +import { EditorMode, Space } from '@grafana/experimental'; import { SqlDatasource } from '../datasource/SqlDatasource'; import { applyQueryDefaults } from '../defaults'; -import { SQLQuery, QueryRowFilter, SQLOptions, EditorMode } from '../types'; +import { SQLQuery, QueryRowFilter, SQLOptions } from '../types'; import { haveColumns } from '../utils/sql.utils'; import { QueryHeader, QueryHeaderProps } from './QueryHeader'; diff --git a/public/app/features/plugins/sql/components/QueryHeader.tsx b/public/app/features/plugins/sql/components/QueryHeader.tsx index 1aa1201570b..3a18611e9f2 100644 --- a/public/app/features/plugins/sql/components/QueryHeader.tsx +++ b/public/app/features/plugins/sql/components/QueryHeader.tsx @@ -2,11 +2,11 @@ import React, { useCallback, useState } from 'react'; import { useCopyToClipboard } from 'react-use'; import { SelectableValue } from '@grafana/data'; -import { EditorField, EditorHeader, EditorRow, FlexItem, InlineSelect, Space } from '@grafana/experimental'; +import { EditorField, EditorHeader, EditorMode, EditorRow, FlexItem, InlineSelect, Space } from '@grafana/experimental'; import { Button, InlineField, InlineSwitch, RadioButtonGroup, Select, Tooltip } from '@grafana/ui'; import { QueryWithDefaults } from '../defaults'; -import { SQLQuery, QueryFormat, QueryRowFilter, QUERY_FORMAT_OPTIONS, DB, EditorMode } from '../types'; +import { SQLQuery, QueryFormat, QueryRowFilter, QUERY_FORMAT_OPTIONS, DB } from '../types'; import { defaultToRawSql } from '../utils/sql.utils'; import { ConfirmModal } from './ConfirmModal'; diff --git a/public/app/features/plugins/sql/datasource/SqlDatasource.ts b/public/app/features/plugins/sql/datasource/SqlDatasource.ts index ab621f868d7..eda97b704f3 100644 --- a/public/app/features/plugins/sql/datasource/SqlDatasource.ts +++ b/public/app/features/plugins/sql/datasource/SqlDatasource.ts @@ -25,8 +25,10 @@ import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv'; import { VariableWithMultiSupport } from '../../../variables/types'; import { getSearchFilterScopedVar, SearchFilterOptions } from '../../../variables/utils'; import { ResponseParser } from '../ResponseParser'; +import { SqlQueryEditor } from '../components/QueryEditor'; import { MACRO_NAMES } from '../constants'; import { DB, SQLQuery, SQLOptions, SqlQueryModel, QueryFormat } from '../types'; +import migrateAnnotation from '../utils/migration'; export abstract class SqlDatasource extends DataSourceWithBackend { id: number; @@ -34,7 +36,6 @@ export abstract class SqlDatasource extends DataSourceWithBackend, @@ -47,6 +48,10 @@ export abstract class SqlDatasource extends DataSourceWithBackend) { + const oldQuery = typeof annotation.rawQuery === 'string' ? annotation.rawQuery : null; + + if (!oldQuery) { + return annotation; + } + + const newQuery: SQLQuery = { + ...(annotation.target ?? {}), + refId: annotation.target?.refId ?? 'Anno', + editorMode: EditorMode.Code, + rawSql: oldQuery, + }; + + return { + ...annotation, + rawQuery: undefined, + workspace: undefined, + subscription: undefined, + queryType: undefined, + target: newQuery, + }; +}