db connector: ds loading refactor

This commit is contained in:
Alexander Zobnin
2018-10-30 21:05:48 +03:00
parent 6eb52619b9
commit 34ba8bba1c
3 changed files with 42 additions and 30 deletions

View File

@@ -42,26 +42,33 @@ export class DBConnector {
this.datasourceTypeName = null;
}
loadDBDataSource() {
if (!this.datasourceName && this.datasourceId !== undefined) {
let ds = _.find(this.datasourceSrv.getAll(), {'id': this.datasourceId});
static loadDatasource(dsId, dsName, datasourceSrv) {
if (!dsName && dsId !== undefined) {
let ds = _.find(datasourceSrv.getAll(), {'id': dsId});
if (!ds) {
return Promise.reject(`SQL Data Source with ID ${this.datasourceId} not found`);
return Promise.reject(`Data Source with ID ${dsId} not found`);
}
this.datasourceName = ds.name;
dsName = ds.name;
}
if (this.datasourceName) {
return this.datasourceSrv.loadDatasource(this.datasourceName)
.then(ds => {
this.datasourceTypeId = ds.meta.id;
this.datasourceTypeName = ds.meta.name;
return ds;
});
if (dsName) {
return datasourceSrv.loadDatasource(dsName);
} else {
return Promise.reject(`SQL Data Source name should be specified`);
return Promise.reject(`Data Source name should be specified`);
}
}
loadDBDataSource() {
return DBConnector.loadDatasource(this.datasourceId, this.datasourceName, this.datasourceSrv)
.then(ds => {
this.datasourceTypeId = ds.meta.id;
this.datasourceTypeName = ds.meta.name;
if (!this.datasourceName) {
this.datasourceName = ds.name;
}
return ds;
});
}
/**
* Send test request to datasource in order to ensure it's working.
*/

View File

@@ -9,15 +9,17 @@ const supportedDatabases = {
};
export class SQLConnector extends DBConnector {
constructor(options, datasourceSrv, backendSrv) {
constructor(options, datasourceSrv) {
super(options, datasourceSrv);
this.backendSrv = backendSrv;
this.limit = options.limit || DEFAULT_QUERY_LIMIT;
this.sqlDialect = null;
super.loadDBDataSource()
.then(() => this.loadSQLDialect());
.then(ds => {
this.backendSrv = ds.backendSrv;
this.loadSQLDialect();
});
}
loadSQLDialect() {