Browse Source

fix: 兼容设计器,使用驱动来判断数据库类型

qufenxi
alan 6 years ago
parent
commit
25bc7c73cf
  1. 15
      src/modules/app.service.ts
  2. 17
      src/modules/crud/crud.service.ts
  3. 6
      src/modules/pages/connection/connection_jdbc/connection_jdbc.ts
  4. 4
      src/modules/pages/connection/list/list.service.ts
  5. 10
      src/modules/pages/maintain/forms/components/form.jdbc.ts

15
src/modules/app.service.ts

@ -21,3 +21,18 @@ export function getPluginWidgetShow(plugin: string) {
export function getPluginWidgetEdit(plugin: string) { export function getPluginWidgetEdit(plugin: string) {
return BI.Constants.getConstant(CONSTANT_PLUGIN_EDIT.replace('${databaseType}', plugin)); return BI.Constants.getConstant(CONSTANT_PLUGIN_EDIT.replace('${databaseType}', plugin));
} }
// 由于database可能为空,所以为了兼容平台和设计器,需要根据driver来判断数据库类型
export function getJdbcDatabaseType(database: string, driver: string): DatabaseType {
if (database && DATA_BASE_TYPES.some(item => item.databaseType === database)) {
return DATA_BASE_TYPES.find(item => item.databaseType === database);
}
return (DATA_BASE_TYPES as DatabaseType[]).find(item => {
if (item.drivers) {
return item.drivers.includes(driver);
}
return item.driver === driver;
});
}

17
src/modules/crud/crud.service.ts

@ -2,6 +2,10 @@ import 'es6-promise/auto';
import axios, { AxiosResponse, AxiosError } from 'axios'; import axios, { AxiosResponse, AxiosError } from 'axios';
import { CrudReqOpts, CrudParams } from './crud.typings.d'; import { CrudReqOpts, CrudParams } from './crud.typings.d';
import { ReqPrefix } from '../constants/env'; import { ReqPrefix } from '../constants/env';
const defaultHeaders = {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
};
export function paramsSerializer(params: { [key: string]: any }) { export function paramsSerializer(params: { [key: string]: any }) {
return Object.keys(params || {}) return Object.keys(params || {})
@ -44,6 +48,7 @@ export async function request(reqOptions: CrudReqOpts = {}) {
baseURL: ReqPrefix, baseURL: ReqPrefix,
method: type, method: type,
headers: { headers: {
...defaultHeaders,
...headers, ...headers,
Authorization: `Bearer ${getCookieByName('fine_auth_token')}`, Authorization: `Bearer ${getCookieByName('fine_auth_token')}`,
}, },
@ -71,9 +76,6 @@ export function requestGet(url: string, data?: any, params: CrudParams = {}) {
type: 'GET', type: 'GET',
data, data,
params, params,
headers: {
'Content-Type': 'application/json',
},
}); });
} }
@ -83,9 +85,6 @@ export function requestPost(url: string, data = {}, params: CrudParams = {}) {
type: 'POST', type: 'POST',
data, data,
params, params,
headers: {
'Content-Type': 'application/json',
},
}); });
} }
@ -94,9 +93,6 @@ export function requestDelete(url: string, data = {}) {
url, url,
type: 'DELETE', type: 'DELETE',
data, data,
headers: {
'Content-Type': 'application/json',
},
}); });
} }
@ -106,8 +102,5 @@ export function requestPut(url: string, data = {}, params: CrudParams = {}) {
type: 'PUT', type: 'PUT',
data, data,
params, params,
headers: {
'Content-Type': 'application/json',
},
}); });
} }

6
src/modules/pages/connection/connection_jdbc/connection_jdbc.ts

@ -4,7 +4,7 @@ import { FormItemXtype } from '../components/form_item/form_item';
import { CollapseXtype, EVENT_CHANGE } from 'src/modules/components/collapse/collapse'; import { CollapseXtype, EVENT_CHANGE } from 'src/modules/components/collapse/collapse';
import { ConnectionJdbcModelXtype, ConnectionJdecModel } from './connection_jdbc.model'; import { ConnectionJdbcModelXtype, ConnectionJdecModel } from './connection_jdbc.model';
import { ConnectionJDBC } from 'src/modules/crud/crud.typings'; import { ConnectionJDBC } from 'src/modules/crud/crud.typings';
import { getAllDatabaseTypes } from '../../../app.service'; import { getAllDatabaseTypes, getJdbcDatabaseType } from '../../../app.service';
export const ConnectionJdbcXtype = 'dec.dcm.connection_jdbc'; export const ConnectionJdbcXtype = 'dec.dcm.connection_jdbc';
@shortcut(ConnectionJdbcXtype) @shortcut(ConnectionJdbcXtype)
@store(ConnectionJdbcModelXtype) @store(ConnectionJdbcModelXtype)
@ -17,7 +17,7 @@ export class ConnectionJdbc extends BI.Widget {
render () { render () {
const connectionData = this.model.connectionSelectedOne.connectionData as ConnectionJDBC; const connectionData = this.model.connectionSelectedOne.connectionData as ConnectionJDBC;
const { driver, database, host, user, newCharsetName, schema, connectionPool, port, authType, principal, keyPath } = connectionData; const { driver, database, host, user, newCharsetName, schema, connectionPool, port, authType, principal, keyPath } = connectionData;
const databaseType = this.allDatabaseTypes.find(item => item.databaseType === database); const databaseType = getJdbcDatabaseType(database, driver);
return { return {
type: Vertical, type: Vertical,
@ -32,7 +32,7 @@ export class ConnectionJdbc extends BI.Widget {
{ {
type: FormItemXtype, type: FormItemXtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'),
value: database, value: databaseType.databaseType,
}, },
{ {
type: FormItemXtype, type: FormItemXtype,

4
src/modules/pages/connection/list/list.service.ts

@ -1,6 +1,6 @@
import { Connection, ConnectionJDBC, ConnectionJNDI, ConnectionPlugin } from '../../../crud/crud.typings'; import { Connection, ConnectionJDBC, ConnectionJNDI, ConnectionPlugin } from '../../../crud/crud.typings';
import { connectionType } from '@constants/env'; import { connectionType } from '@constants/env';
import { getAllDatabaseTypes } from 'src/modules/app.service'; import { getAllDatabaseTypes, getJdbcDatabaseType } from 'src/modules/app.service';
export function getCreator(connection: Connection) { export function getCreator(connection: Connection) {
switch (connection.connectionType) { switch (connection.connectionType) {
@ -16,7 +16,7 @@ export function getCreator(connection: Connection) {
export function getDatabaseType(connection: Connection) { export function getDatabaseType(connection: Connection) {
switch (connection.connectionType) { switch (connection.connectionType) {
case connectionType.JDBC: case connectionType.JDBC:
return (connection.connectionData as ConnectionJDBC).database; return getJdbcDatabaseType((connection.connectionData as ConnectionJDBC).database, (connection.connectionData as ConnectionJDBC).driver);
case connectionType.JNDI: case connectionType.JNDI:
return connectionType.JNDI; return connectionType.JNDI;
default: default:

10
src/modules/pages/maintain/forms/components/form.jdbc.ts

@ -5,7 +5,7 @@ import { FormItemXtype } from '../../components/form_item/form_item';
import { Connection, ConnectionJDBC, ConnectionPoolJDBC } from 'src/modules/crud/crud.typings'; import { Connection, ConnectionJDBC, ConnectionPoolJDBC } from 'src/modules/crud/crud.typings';
import { connectionType } from '@constants/env'; import { connectionType } from '@constants/env';
import { CONNECT_CHARSET } from '@constants/constant'; import { CONNECT_CHARSET } from '@constants/constant';
import { getAllDatabaseTypes } from '../../../../app.service'; import { getAllDatabaseTypes, getJdbcDatabaseType } from '../../../../app.service';
export const FormJdbcXtype = 'dec.dcm.maintain.form.jdbc'; export const FormJdbcXtype = 'dec.dcm.maintain.form.jdbc';
@shortcut(FormJdbcXtype) @shortcut(FormJdbcXtype)
@ -56,7 +56,7 @@ export class FormJdbc extends BI.Widget {
const { driver, host, port, user, password, newCharsetName, schema, url, connectionPool, database, authType, principal, keyPath } = connectionData as ConnectionJDBC; const { driver, host, port, user, password, newCharsetName, schema, url, connectionPool, database, authType, principal, keyPath } = connectionData as ConnectionJDBC;
// minIdle 暂未使用 // minIdle 暂未使用
const { initialSize, maxActive, maxIdle, maxWait, validationQuery, testOnBorrow, testOnReturn, testWhileIdle, timeBetweenEvictionRunsMillis, numTestsPerEvictionRun, minEvictableIdleTimeMillis } = connectionPool as ConnectionPoolJDBC; const { initialSize, maxActive, maxIdle, maxWait, validationQuery, testOnBorrow, testOnReturn, testWhileIdle, timeBetweenEvictionRunsMillis, numTestsPerEvictionRun, minEvictableIdleTimeMillis } = connectionPool as ConnectionPoolJDBC;
const databaseType = this.allDatabaseTypes.find(item => item.databaseType === database); const databaseType = getJdbcDatabaseType(database, driver);
this.oldPassword = password; this.oldPassword = password;
return { return {
@ -100,7 +100,7 @@ export class FormJdbc extends BI.Widget {
allowBlank: true, allowBlank: true,
disabled: true, disabled: true,
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'), watermark: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'),
value: database, value: databaseType.databaseType,
ref: (_ref: any) => { ref: (_ref: any) => {
this.form.database = _ref; this.form.database = _ref;
}, },
@ -506,8 +506,8 @@ export class FormJdbc extends BI.Widget {
} }
private getDrivers() { private getDrivers() {
const datebastType = (this.options.formData.connectionData as ConnectionJDBC).database; const connectionData = this.options.formData.connectionData as ConnectionJDBC;
const connectionType = this.allDatabaseTypes.find(item => item.databaseType === datebastType); const connectionType = getJdbcDatabaseType(connectionData.database, connectionData.driver);
return connectionType.drivers ? return connectionType.drivers ?
connectionType.drivers.map(item => { connectionType.drivers.map(item => {

Loading…
Cancel
Save