From 3cb92e34603ab1ee661729984988e0cfce796bb7 Mon Sep 17 00:00:00 2001 From: ismail simsek Date: Wed, 8 Nov 2023 15:00:13 +0100 Subject: [PATCH] InfluxDB: Template variable support for SQL language (#77799) * Only run through with classicQuery if the language is influxql and backend migration is disabled * Add variable editor * Simple template variable support * Show template variables in the drowdowns * better imports * unit tests * it is now 11 just because we add rawSql interpolation in datasource.ts applyVariables method * fix --- .../editor/query/fsql/FSQLEditor.tsx | 53 ++++---- .../editor/variable/VariableQueryEditor.tsx | 19 ++- .../datasource/influxdb/datasource.test.ts | 2 +- .../plugins/datasource/influxdb/datasource.ts | 16 ++- .../influxdb/datasource_backend_mode.test.ts | 2 +- .../influxdb/datasource_sql.test.ts | 44 +++++++ .../fsql/datasource.flightsql.test.ts | 49 ++++++++ .../influxdb/fsql/datasource.flightsql.ts | 28 ++++- .../app/plugins/datasource/influxdb/mocks.ts | 116 +++++++++++++++++- 9 files changed, 287 insertions(+), 42 deletions(-) create mode 100644 public/app/plugins/datasource/influxdb/datasource_sql.test.ts create mode 100644 public/app/plugins/datasource/influxdb/fsql/datasource.flightsql.test.ts diff --git a/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx b/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx index cc79bdc0e44..5b33e20a8d3 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx @@ -25,33 +25,36 @@ class UnthemedSQLQueryEditor extends PureComponent { super(props); const { datasource: influxDatasource } = props; - this.datasource = new FlightSQLDatasource({ - url: influxDatasource.urls[0], - access: influxDatasource.access, - id: influxDatasource.id, - - jsonData: { - // Not applicable to flightSQL? @itsmylife - allowCleartextPasswords: false, - tlsAuth: false, - tlsAuthWithCACert: false, - tlsSkipVerify: false, - maxIdleConns: 1, - maxOpenConns: 1, - maxIdleConnsAuto: true, - connMaxLifetime: 1, - timezone: '', - user: '', - database: '', + this.datasource = new FlightSQLDatasource( + { url: influxDatasource.urls[0], - timeInterval: '', + access: influxDatasource.access, + id: influxDatasource.id, + + jsonData: { + // TODO Clean this + allowCleartextPasswords: false, + tlsAuth: false, + tlsAuthWithCACert: false, + tlsSkipVerify: false, + maxIdleConns: 1, + maxOpenConns: 1, + maxIdleConnsAuto: true, + connMaxLifetime: 1, + timezone: '', + user: '', + database: '', + url: influxDatasource.urls[0], + timeInterval: '', + }, + meta: influxDatasource.meta, + name: influxDatasource.name, + readOnly: false, + type: influxDatasource.type, + uid: influxDatasource.uid, }, - meta: influxDatasource.meta, - name: influxDatasource.name, - readOnly: false, - type: influxDatasource.type, - uid: influxDatasource.uid, - }); + influxDatasource.templateSrv + ); } transformQuery(query: InfluxQuery & SQLQuery): SQLQuery { diff --git a/public/app/plugins/datasource/influxdb/components/editor/variable/VariableQueryEditor.tsx b/public/app/plugins/datasource/influxdb/components/editor/variable/VariableQueryEditor.tsx index 1df0f2ff78b..e771e54a982 100644 --- a/public/app/plugins/datasource/influxdb/components/editor/variable/VariableQueryEditor.tsx +++ b/public/app/plugins/datasource/influxdb/components/editor/variable/VariableQueryEditor.tsx @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react'; -import { InlineFormLabel, TextArea } from '@grafana/ui/src'; +import { Field, FieldSet, InlineFormLabel, TextArea } from '@grafana/ui'; import InfluxDatasource from '../../../datasource'; import { InfluxVersion } from '../../../types'; @@ -33,11 +33,20 @@ export default class VariableQueryEditor extends PureComponent { onChange={(v) => onChange(v.query)} /> ); - //@todo add support for SQL case InfluxVersion.SQL: - return
TODO
; - - // Influx/default case + return ( +
+ +