diff --git a/src/modules/app.provider.ts b/src/modules/app.provider.ts index f3e9a60..791d2be 100644 --- a/src/modules/app.provider.ts +++ b/src/modules/app.provider.ts @@ -1,10 +1,11 @@ import { CONSTANT_PLUGIN_TYPES } from './app.constant'; +import { DATA_BASE_TYPES } from '@constants/constant'; -BI.provider('dec.connection.provider.datebase', function() { +BI.provider('dec.connection.provider.datebase', function () { this.resolves = {}; // 原service中resolveUrlInfo方法 - function jdbcResolve (url: string) { + function jdbcResolve(url: string) { if (BI.isNull(url)) return {}; const oracleUlr = url.match(/^jdbc:(oracle):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(:|\/)([^]+)(.*)/i); if (oracleUlr) { @@ -68,14 +69,35 @@ BI.provider('dec.connection.provider.datebase', function() { }; } + function coverBaseDatabase(config) { + const baseDataBase = DATA_BASE_TYPES.find(item => item.text === config.text); + if (BI.isNotNull(baseDataBase)) { + // 覆盖基础配置 + Object.assign(baseDataBase, config); + + return true; + } + + return false; + } + this.registerDatabaseType = (config: any) => { + if (coverBaseDatabase(config)) return; + BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, config)); }; this.registerJdbcDatabase = (config: any, resolve?: Function) => { - BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, { ...config, type: 'jdbc' })); + config = { + ...config, + type: 'jdbc', + }; BI.isFunction(resolve) && (this.resolves[config.databaseType] = resolve); + + if (coverBaseDatabase(config)) return; + + BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, config)); }; this.$get = () => BI.inherit(BI.OB, {