mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
MS/My/PostgresSQL: Migrate annotation query (#58847)
This commit is contained in:
parent
44402ff726
commit
38f25a0bf5
@ -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';
|
||||
|
@ -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';
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
28
public/app/features/plugins/sql/utils/migration.ts
Normal file
28
public/app/features/plugins/sql/utils/migration.ts
Normal 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,
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user