mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
* badlm0mma/sql_datasource_update/ initial notes * baldm0mma/sql_datasource_update/ solution * baldm0mma/sql_datasource_update/ clean datasetSelector * baldm0mma/sql_datasource_update/ clean up queryEditor.tsx * baldm0mma/sql_datasource_update/ clewan up queryHeader.tsx * baldm0mma/sql_datasource_update/ clean up tableSelector.tsx * baldm0mma/sql_datasource_update/ clean up mysqlDatasource.ts * baldm0mma/sql_datasource_update/ clean up configurationEditor.tsx * baldm0mma/sql_datasource_update/ rem conlog from queryEditor.tsx * baldm0mma/sql_datasource_update/ rem conlog from queryEditor.tsx * baldm0mma/sql_datasource_update/ remove conlog in tableSelector.tsx * baldm0mma/sql_datasource_update/ rem conlog in sqlDatasource.ts * baldm0mma/sql_datasource_update/ update deafult database value in sqlDatasource.ts * baldm0mma/sql_datasource_update/ update logic to accomidate no preconfig * baldm0mma/sql_datasource_update/ update props * baldm0mma/sql_datasource_update/ update prop names * baldm0mma/sql_datasource_update/ update prop names in tableSelector * baldm0mma/sql_datasource_update/ update annos in datasetSelector * baldm0mma/sql_datasource_update/ update naming * baldm0mma/sql_datasource_update/ update to standard langauae * baldm0mma/sql_datasource_update/ update prop names * baldm0mma/sql_datasource_update/ update annos in datasetSelector * baldm0mma/sql_datasource_update/ remove unused import in tableSelector.tsx * baldm0mma/sql_datasource_update/ remove addDefaultdataset * baldm0mma/sql_datasource_update/ reset query when needed * baldm0mma/sql_datasource_update/ update asymc return val * baldm0mma/sql_datasource_update/ remove psql query editor * baldm0mma/sql_datasource_update/ remove con logs in defaults.ts * baldm0mma/sql_datasource_update/ revert postgres changes * baldm0mma/sql_datasource_update/ update postgres naming * baldm0mma/sql_datasource_update/ add altert * baldm0mma/sql_datasource_update/ update annos and add alerts and alert logic * baldm0mma/sql_datasource_update/ update postgres nomenclature * baldm0mma/sql_datasource_update/ update annos and remove con logs * baldm0mma/sql_datasource_update/ update nomenclature * baldm0mma/sql_datasource_update/ drone fix * baldm0mma/sql_datasource_update/ export and format * baldm0mma/sql_datasource_update/ update docs for mysql datasource with dataset dropdown disable info * baldm0mma/sql_datasource_update/ update mssql docs * baldm0mma/sql_datasource_update/ update postgres docs and alert logic * baldm0mma/sql_datasource_update/ add tests * baldm0mma/sql_datasource_update/ update docs * baldm0mma/sql_datasource_update/ update test names * baldm0mma/sql_datasource_update/ update alert language * baldm0mma/sql_datasource_update/ correct spelling * baldm0mma/sql_datasource_update/ update postgres query builder image * baldm0mma/sql_datasource_update/ update annos * baldm0mma/sql_datasource_update/ update tests * baldm0mma/sql_datasource_update/ docs updated * baldm0mma/sql_datsource_update/ refactor determinePlaceholder * Update public/app/features/plugins/sql/components/QueryEditor.tsx spelling Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com> * Update public/app/features/plugins/sql/components/QueryEditor.tsx spelling Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com> * baldm0mma/sql_datasource_update/ remove superfluous cleanup data from tests * baldm0mma/sql_datasource_update/ update spelling * Update public/app/features/plugins/sql/components/SqlComponents.test.tsx spelling Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com> * baldm0mma/sql_datasource_update/ add logic to prevent db call for tables if dataset it nullish * baldm0mma/sql_datasource_update/ update alert tests * baldm0mma/sql_datasource_update/ update button text * baldm0mma/sql_datasource_update/ update tests to preferred standard * baldm0mma/sql_datasource_update/add feature flag * baldm0mma/sql_datasource_update/ update mssql docs * baldm0mma/sql_datasource_update/ add feature flag to registry * baldm0mma/sql_datasource_update/ adjust table and dataset dropdown logic * baldm0mma/sql_datasource_update/ update testing to deal with feature flag * baldm0mma/sql_datasource_update/ update wioth cascadeDisable * baldm0mma/sql_datasource_update/ update naming * baldm0mma/sql_datasource_update/ update tests to reflect enabled feature flag * baldm0mma/sql_datasource_update/ update annotations * baldm0mma/sql_datasource_update/ update annos in queryEd * baldm0mma/sql_datasource_update/ update test names * baldm0mma/sql_datasource_update/ update anno issues * baldm0mma/slq_datasource_update/ add query to sqlDatasource with error * baldm0mma/sql_datasource_update/ update docs language * baldm0mma/sql_datasource_update/ remove notes to self * baldm0mma/sql_datasource_update/ add QueryEditorFeatureFlag.utils.ts * baldm0mma/sql_datasource_update/ update database into json * baldm0mma/sql_datasource_update/ found file * Update docs/sources/datasources/mssql/query-editor/index.md Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com> * baldm0mma/sql_datasource_update/ update feature flag and toggles * baldm0mma/sql_datasource_update/ add hasConfigIssue, update annos, rethink disable logic * baldm0mma/sql_datasource_update/ update warning language * baldm0mma/sql_datasource_update/ update button content * baldm0mma/sql_datasource_update/ update jsonData logic in frontendsettings.go * baldm0mma/sql_datasource_update/ update jsonData logic * baldm0mma/sql_datasource_update/ update annos in frontendsettings.go * baldm0mma/sql_datasource_update/ update sql editor docs * baldm0mma/sql_datasource_update/ update mysql docs * baldm0mma/sql_datasource_update/ update postgres docs * baldm0mma/sql_datasource_update/ remove unused code in datasetSelector.tsx * baldm0mma/sql_datasource_update/ update syntax conventions * baldm0mma/sql_datasource_update/ add logs * baldm0mma/sql_datasource_update/ remove unused code * baldm0mma/sql_datasource_update/ remove conlogs * baldm0mma/sql_datasource_update/ update tests * baldm0mma/sql_datasource_update/ add second error to query * baldm0mma/sql_datasource_update/ run make gen-cue * baldm0mma/sql_database_update/ lint registry * baldm0mma/sql_datasource_update/ update registry * baldm0mma/sql_datasource_update/ upate datasource logic * baldm0mma/sql_datasource_update/ add logs * baldm0mma/sql_datasource_update/ add comms to self * baldm0mma/sql_datasource_update/ comment out false pos tests, and add investigatory comments * baldm0mma/sql_database_update/ update query error to only test for config change if query was made in "builder" mode * baldm0mma/sql_datasource_update/ update annos in frontendsettings.go * baldm0mma/sql_datasource_update/ update error logic to datasource * baldm0mma/sql_datasource_update/ remove alerts from query editor * baldm0mma/sql_datasource_update/ remove unused imports * baldm0mma/sql_datasource_update/ update tests * baldm0mma/sql_datasource_update/ remove comments * baldm0mma/sql_datasource_update/ remove logs in queryGroup.tsx * baldm0mma/sql_datasource_update/ remove outdated annotation in datasetSelector.tsx * baldm0mma/sql_datasource_update/ remove superfluous test and update test description * baldm0mma/sql_datasource_update/ remove feature flag * baldm0mma/sql_datasource_update/ add back feature flag * baldm0mma/sql_datasource_update/ update to enums * baldm0mma/sql_datasource_update/ update panel caps * baldm0mma/sql_datasource_update/ update dataset selector to default update the database correctly * baldm0mma/sql_datasource_update/ move onChange into conditional * baldm0mma/sql_datasource_update/ add logic for previous datasets choice * baldm0mma/sql_datasource_update/ add back previous logic for assigning default datasets * baldm0mma/sql_datasource_update/ update useEffect dep array * baldm0mma/sql_datasource_update/ remove feature toggle * baldm0mma/sql_datasource_update/ add feature toggle --------- Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com> Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com>
107 lines
3.6 KiB
TypeScript
107 lines
3.6 KiB
TypeScript
import { DataSourceInstanceSettings, ScopedVars } from '@grafana/data';
|
|
import { LanguageDefinition } from '@grafana/experimental';
|
|
import { SqlDatasource } from 'app/features/plugins/sql/datasource/SqlDatasource';
|
|
import { DB, SQLQuery, SQLSelectableValue } from 'app/features/plugins/sql/types';
|
|
import { formatSQL } from 'app/features/plugins/sql/utils/formatSQL';
|
|
import { TemplateSrv } from 'app/features/templating/template_srv';
|
|
|
|
import { PostgresQueryModel } from './PostgresQueryModel';
|
|
import { getSchema, getTimescaleDBVersion, getVersion, showTables } from './postgresMetaQuery';
|
|
import { fetchColumns, fetchTables, getSqlCompletionProvider } from './sqlCompletionProvider';
|
|
import { getFieldConfig, toRawSql } from './sqlUtil';
|
|
import { PostgresOptions } from './types';
|
|
|
|
export class PostgresDatasource extends SqlDatasource {
|
|
sqlLanguageDefinition: LanguageDefinition | undefined = undefined;
|
|
|
|
constructor(instanceSettings: DataSourceInstanceSettings<PostgresOptions>) {
|
|
super(instanceSettings);
|
|
}
|
|
|
|
getQueryModel(target?: SQLQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars): PostgresQueryModel {
|
|
return new PostgresQueryModel(target, templateSrv, scopedVars);
|
|
}
|
|
|
|
async getVersion(): Promise<string> {
|
|
const value = await this.runSql<{ version: number }>(getVersion());
|
|
const results = value.fields.version?.values;
|
|
|
|
if (!results) {
|
|
return '';
|
|
}
|
|
|
|
return results[0].toString();
|
|
}
|
|
|
|
async getTimescaleDBVersion(): Promise<string | undefined> {
|
|
const value = await this.runSql<{ extversion: string }>(getTimescaleDBVersion());
|
|
const results = value.fields.extversion?.values;
|
|
|
|
if (!results) {
|
|
return undefined;
|
|
}
|
|
|
|
return results[0];
|
|
}
|
|
|
|
async fetchTables(): Promise<string[]> {
|
|
const tables = await this.runSql<{ table: string[] }>(showTables(), { refId: 'tables' });
|
|
return tables.fields.table?.values.flat() ?? [];
|
|
}
|
|
|
|
getSqlLanguageDefinition(db: DB): LanguageDefinition {
|
|
if (this.sqlLanguageDefinition !== undefined) {
|
|
return this.sqlLanguageDefinition;
|
|
}
|
|
|
|
const args = {
|
|
getColumns: { current: (query: SQLQuery) => fetchColumns(db, query) },
|
|
getTables: { current: () => fetchTables(db) },
|
|
};
|
|
this.sqlLanguageDefinition = {
|
|
id: 'pgsql',
|
|
completionProvider: getSqlCompletionProvider(args),
|
|
formatter: formatSQL,
|
|
};
|
|
return this.sqlLanguageDefinition;
|
|
}
|
|
|
|
async fetchFields(query: SQLQuery): Promise<SQLSelectableValue[]> {
|
|
const schema = await this.runSql<{ column: string; type: string }>(getSchema(query.table), { refId: 'columns' });
|
|
const result: SQLSelectableValue[] = [];
|
|
for (let i = 0; i < schema.length; i++) {
|
|
const column = schema.fields.column.values[i];
|
|
const type = schema.fields.type.values[i];
|
|
result.push({ label: column, value: column, type, ...getFieldConfig(type) });
|
|
}
|
|
return result;
|
|
}
|
|
|
|
getDB(): DB {
|
|
if (this.db !== undefined) {
|
|
return this.db;
|
|
}
|
|
|
|
return {
|
|
init: () => Promise.resolve(true),
|
|
datasets: () => Promise.resolve([]),
|
|
tables: () => this.fetchTables(),
|
|
getEditorLanguageDefinition: () => this.getSqlLanguageDefinition(this.db),
|
|
fields: async (query: SQLQuery) => {
|
|
if (!query?.table) {
|
|
return [];
|
|
}
|
|
return this.fetchFields(query);
|
|
},
|
|
validateQuery: (query) =>
|
|
Promise.resolve({ isError: false, isValid: true, query, error: '', rawSql: query.rawSql }),
|
|
dsID: () => this.id,
|
|
toRawSql,
|
|
lookup: async () => {
|
|
const tables = await this.fetchTables();
|
|
return tables.map((t) => ({ name: t, completion: t }));
|
|
},
|
|
};
|
|
}
|
|
}
|