MS/My/PostgresSQL: Migrate annotation query (#58847)

pull/59074/head
Zoltán Bedi 3 years ago committed by GitHub
parent 44402ff726
commit 38f25a0bf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      public/app/features/plugins/sql/components/QueryEditor.tsx
  2. 4
      public/app/features/plugins/sql/components/QueryHeader.tsx
  3. 7
      public/app/features/plugins/sql/datasource/SqlDatasource.ts
  4. 4
      public/app/features/plugins/sql/defaults.ts
  5. 7
      public/app/features/plugins/sql/types.ts
  6. 28
      public/app/features/plugins/sql/utils/migration.ts

@ -2,11 +2,11 @@ import React, { useCallback, useEffect, useState } from 'react';
import { useAsync } from 'react-use'; import { useAsync } from 'react-use';
import { QueryEditorProps } from '@grafana/data'; import { QueryEditorProps } from '@grafana/data';
import { Space } from '@grafana/experimental'; import { EditorMode, Space } from '@grafana/experimental';
import { SqlDatasource } from '../datasource/SqlDatasource'; import { SqlDatasource } from '../datasource/SqlDatasource';
import { applyQueryDefaults } from '../defaults'; import { applyQueryDefaults } from '../defaults';
import { SQLQuery, QueryRowFilter, SQLOptions, EditorMode } from '../types'; import { SQLQuery, QueryRowFilter, SQLOptions } from '../types';
import { haveColumns } from '../utils/sql.utils'; import { haveColumns } from '../utils/sql.utils';
import { QueryHeader, QueryHeaderProps } from './QueryHeader'; import { QueryHeader, QueryHeaderProps } from './QueryHeader';

@ -2,11 +2,11 @@ import React, { useCallback, useState } from 'react';
import { useCopyToClipboard } from 'react-use'; import { useCopyToClipboard } from 'react-use';
import { SelectableValue } from '@grafana/data'; 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 { Button, InlineField, InlineSwitch, RadioButtonGroup, Select, Tooltip } from '@grafana/ui';
import { QueryWithDefaults } from '../defaults'; 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 { defaultToRawSql } from '../utils/sql.utils';
import { ConfirmModal } from './ConfirmModal'; import { ConfirmModal } from './ConfirmModal';

@ -25,8 +25,10 @@ import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv';
import { VariableWithMultiSupport } from '../../../variables/types'; import { VariableWithMultiSupport } from '../../../variables/types';
import { getSearchFilterScopedVar, SearchFilterOptions } from '../../../variables/utils'; import { getSearchFilterScopedVar, SearchFilterOptions } from '../../../variables/utils';
import { ResponseParser } from '../ResponseParser'; import { ResponseParser } from '../ResponseParser';
import { SqlQueryEditor } from '../components/QueryEditor';
import { MACRO_NAMES } from '../constants'; import { MACRO_NAMES } from '../constants';
import { DB, SQLQuery, SQLOptions, SqlQueryModel, QueryFormat } from '../types'; import { DB, SQLQuery, SQLOptions, SqlQueryModel, QueryFormat } from '../types';
import migrateAnnotation from '../utils/migration';
export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> { export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> {
id: number; id: number;
@ -34,7 +36,6 @@ export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLO
name: string; name: string;
interval: string; interval: string;
db: DB; db: DB;
annotations = {};
constructor( constructor(
instanceSettings: DataSourceInstanceSettings<SQLOptions>, instanceSettings: DataSourceInstanceSettings<SQLOptions>,
@ -47,6 +48,10 @@ export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLO
const settingsData = instanceSettings.jsonData || {}; const settingsData = instanceSettings.jsonData || {};
this.interval = settingsData.timeInterval || '1m'; this.interval = settingsData.timeInterval || '1m';
this.db = this.getDB(); this.db = this.getDB();
this.annotations = {
prepareAnnotation: migrateAnnotation,
QueryEditor: SqlQueryEditor,
};
} }
abstract getDB(dsID?: number): DB; abstract getDB(dsID?: number): DB;

@ -1,4 +1,6 @@
import { EditorMode, QueryFormat, SQLQuery } from './types'; import { EditorMode } from '@grafana/experimental';
import { QueryFormat, SQLQuery } from './types';
import { createFunctionField, setGroupByField } from './utils/sql.utils'; import { createFunctionField, setGroupByField } from './utils/sql.utils';
export function applyQueryDefaults(q?: SQLQuery): SQLQuery { export function applyQueryDefaults(q?: SQLQuery): SQLQuery {

@ -9,7 +9,7 @@ import {
TimeRange, TimeRange,
toOption as toOptionFromData, toOption as toOptionFromData,
} from '@grafana/data'; } from '@grafana/data';
import { CompletionItemKind, LanguageCompletionProvider } from '@grafana/experimental'; import { CompletionItemKind, EditorMode, LanguageCompletionProvider } from '@grafana/experimental';
import { QueryWithDefaults } from './defaults'; import { QueryWithDefaults } from './defaults';
import { import {
@ -49,11 +49,6 @@ export enum QueryFormat {
Table = 'table', Table = 'table',
} }
export enum EditorMode {
Builder = 'builder',
Code = 'code',
}
export interface SQLQuery extends DataQuery { export interface SQLQuery extends DataQuery {
alias?: string; alias?: string;
format?: QueryFormat; format?: QueryFormat;

@ -0,0 +1,28 @@
import { AnnotationQuery } from '@grafana/data';
import { EditorMode } from '@grafana/experimental';
import { SQLQuery } from '../types';
export default function migrateAnnotation(annotation: AnnotationQuery<SQLQuery>) {
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,
};
}
Loading…
Cancel
Save