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

This commit is contained in:
Zoltán Bedi 2022-11-21 19:46:04 +01:00 committed by GitHub
parent 44402ff726
commit 38f25a0bf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 12 deletions

View File

@ -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';

View File

@ -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';

View File

@ -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<SQLQuery, SQLOptions> {
id: number;
@ -34,7 +36,6 @@ export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLO
name: string;
interval: string;
db: DB;
annotations = {};
constructor(
instanceSettings: DataSourceInstanceSettings<SQLOptions>,
@ -47,6 +48,10 @@ export abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLO
const settingsData = instanceSettings.jsonData || {};
this.interval = settingsData.timeInterval || '1m';
this.db = this.getDB();
this.annotations = {
prepareAnnotation: migrateAnnotation,
QueryEditor: SqlQueryEditor,
};
}
abstract getDB(dsID?: number): DB;

View File

@ -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';
export function applyQueryDefaults(q?: SQLQuery): SQLQuery {

View File

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

View File

@ -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,
};
}