From 75c06d9318e3d9872a2ee20d2c31f9b14d7d50c2 Mon Sep 17 00:00:00 2001 From: "Austin.Duan" Date: Fri, 25 Nov 2022 14:15:27 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-85619=20feat:=20=E6=8B=93=E5=B1=95?= =?UTF-8?q?=E4=B8=8B=E6=95=B0=E6=8D=AE=E8=BF=9E=E6=8E=A5=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/app.provider.ts | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) 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, {