Browse Source

数据源管理功能完善

master
peng.peng 2 years ago
parent
commit
1d073dc453
  1. 19
      api/app/lib/controllers/metadataAcquisition/dataSource.js
  2. 6
      web/client/src/sections/metadataAcquisition/components/adapterStep.js
  3. 2
      web/client/src/sections/metadataAcquisition/components/dataSourceManagementModal.js
  4. 10
      web/client/src/sections/metadataAcquisition/components/steps/postgre/stepOne.js
  5. 42
      web/client/src/sections/metadataAcquisition/components/steps/postgre/stepThree.js
  6. 6
      web/client/src/sections/metadataAcquisition/components/steps/postgre/stepTwo.js
  7. 10
      web/client/src/sections/metadataAcquisition/containers/dataSourceManagement.js

19
api/app/lib/controllers/metadataAcquisition/dataSource.js

@ -6,10 +6,18 @@ function addDataSource(opts) {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
try { try {
const { name } = ctx.request.body
const checkName = await models.DataSource.findOne({ where: { name, name } });
if (checkName) {
ctx.status = 400;
ctx.body = { message: '该数据源名称已存在' }
} else {
let rslt = ctx.request.body; let rslt = ctx.request.body;
await models.DataSource.create(Object.assign({}, rslt)) await models.DataSource.create(Object.assign({}, rslt))
ctx.status = 204; let datasource = await models.DataSource.findOne({ where: { name } })
ctx.body = { message: '新建数据源成功' } ctx.status = 200;
ctx.body = { message: '新建数据源成功', id: datasource.id }
}
} catch (error) { } catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400; ctx.status = 400;
@ -69,12 +77,19 @@ function editDataSource(opts) {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { id } = ctx.params; const { id } = ctx.params;
const body = ctx.request.body; const body = ctx.request.body;
const { name } = ctx.request.body
const checkName = await models.DataSource.findOne({ where: { id: { $not: id }, name, name } });
if (checkName) {
ctx.status = 400;
ctx.body = { message: '该数据源名称已存在' }
} else {
await models.DataSource.update( await models.DataSource.update(
body, body,
{ where: { id: id, } } { where: { id: id, } }
) )
ctx.status = 204; ctx.status = 204;
ctx.body = { message: '修改数据源成功' } ctx.body = { message: '修改数据源成功' }
}
} catch (error) { } catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400; ctx.status = 400;

6
web/client/src/sections/metadataAcquisition/components/adapterStep.js

@ -28,10 +28,10 @@ const AdapterStep = (props) => {
setCurrent(current - 1); setCurrent(current - 1);
}; };
const onFinish = () => { const onFinish = (values) => {
props.onFinish({ props.onFinish({
stepOneValues, stepOneValues,
stepTwoValues stepTwoValues: values || stepTwoValues
}) })
} }
@ -41,7 +41,7 @@ const AdapterStep = (props) => {
const stepTwoValuesFinish = (values) => { const stepTwoValuesFinish = (values) => {
setStepTwoValues(values) setStepTwoValues(values)
if (stepProps == 2) onFinish() if (stepProps == 2) onFinish(values)
} }
const steps = [ const steps = [

2
web/client/src/sections/metadataAcquisition/components/dataSourceManagementModal.js

@ -22,7 +22,7 @@ function DataSourceModal(props) {
onFinish={onFinish} onFinish={onFinish}
stepProps={2} stepProps={2}
currentChange={c => { setCurrent(c) }} currentChange={c => { setCurrent(c) }}
stepOneInitValue={{ ...editData, ...editData?.adapterInfo }} stepOneInitValue={{ ...editData, ...editData?.adapterInfo, description: editData?.description }}
stepTwoInitValue={{ ...editData?.config }} stepTwoInitValue={{ ...editData?.config }}
{...props} {...props}
/> />

10
web/client/src/sections/metadataAcquisition/components/steps/postgre/stepOne.js

@ -18,15 +18,6 @@ function StepOne(props) {
mountPath: 1, mountPath: 1,
} }
const checkName = async (rule, value) => {
let filter = dataSources?.rows?.find(s => s?.name == value && value !== stepOneInitValue?.name)
if (filter) {
return Promise.reject(new Error('已存该数据源名称!'));
}
return Promise.resolve();
}
const formItemLayout = { labelCol: { span: 3 }, wrapperCol: { span: 10 } }; const formItemLayout = { labelCol: { span: 3 }, wrapperCol: { span: 10 } };
return <> return <>
<ProForm <ProForm
@ -56,7 +47,6 @@ function StepOne(props) {
rules={[ rules={[
{ required: true, message: '请输入数据源名称' }, { required: true, message: '请输入数据源名称' },
{ max: 255, message: '数据源名称长度不能大于255个字符' }, { max: 255, message: '数据源名称长度不能大于255个字符' },
{ validator: checkName }
]} ]}
name="name" name="name"
label="数据源名称" label="数据源名称"

42
web/client/src/sections/metadataAcquisition/components/steps/postgre/stepThree.js

@ -5,7 +5,9 @@ import {
ProFormSelect, ProFormSelect,
ProFormTextArea, ProFormTextArea,
ProFormText, ProFormText,
ProFormDigit ProFormDigit,
ProFormCheckbox,
ProFormDependency
} from '@ant-design/pro-form'; } from '@ant-design/pro-form';
import '../../style.less'; import '../../style.less';
@ -43,7 +45,7 @@ function StepThree(props) {
rules={[{ required: true, message: '请输入数据源名称' }, rules={[{ required: true, message: '请输入数据源名称' },
{ max: 255, message: '数据源名称长度不能大于255个字符' }, { max: 255, message: '数据源名称长度不能大于255个字符' },
]} ]}
name="name" name="taskName"
label="名称" label="名称"
style={{ style={{
minWidth: 140, minWidth: 140,
@ -54,31 +56,51 @@ function StepThree(props) {
rules={[{ required: true, message: '请输入cron表达式' }, rules={[{ required: true, message: '请输入cron表达式' },
{ max: 255, message: 'cron表达式长度不能大于255个字符' }, { max: 255, message: 'cron表达式长度不能大于255个字符' },
]} ]}
name="name" name="cron"
label="请输入cron表达式" label="请输入cron表达式"
style={{ style={{
minWidth: 140, minWidth: 140,
}} }}
addonAfter={<Button>测试</Button>}
/> />
<ProFormCheckbox
// rules={[{ required: true, message: '请选择重试次数' }]}
name="retried"
label="重试"
/>
<ProFormDependency name={['retried']}>
{({ retried }) => {
return retried ?
<>
<ProFormDigit <ProFormDigit
rules={[{ required: true, message: '请输入重试次数' }, rules={[
{ max: 10, message: '重试次数不能大于10个字符' }, // { required: true, message: '请输入重试次数' },
// { max: 10, message: '重试次数不能大于10个字符' },
]} ]}
name="name" name="retryCount"
label="重试次数" label="重试次数"
fieldProps={{ precision: 0, max: 10, }} fieldProps={{ precision: 0, max: 10, }}
/> />
<ProFormText <ProFormDigit
rules={[{ required: true, message: '请输入时间间隔' }, rules={[
{ max: 255, message: '时间间隔长度不能大于255个字符' }, // { required: true, message: '请输入时间间隔' },
// { max: 255, message: '时间间隔长度不能大于255个字符' },
]} ]}
name="name" name="retryTime"
label="时间间隔" label="时间间隔"
addonAfter={'分钟'} addonAfter={'分钟'}
/> />
</>
: null
}}
</ProFormDependency>
</ProForm.Group> </ProForm.Group>
<div className='step-footer'> <div className='step-footer'>

6
web/client/src/sections/metadataAcquisition/components/steps/postgre/stepTwo.js

@ -68,7 +68,7 @@ function StepTwo(props) {
key: 'value', key: 'value',
render: (text, record) => { render: (text, record) => {
return <Input return <Input
type={text == "password" ? "password" : ''} // type={text == "password" ? "password" : ''}
defaultValue={stepTwoValues ? stepTwoValues[text] : ''} defaultValue={stepTwoValues ? stepTwoValues[text] : ''}
onChange={(e) => { onChange={(e) => {
const obj = {}; const obj = {};
@ -116,7 +116,9 @@ function StepTwo(props) {
<div className='step-footer'> <div className='step-footer'>
<Button style={{ margin: '0 8px', }} onClick={() => prev()}>上一步</Button> <Button style={{ margin: '0 8px', }} onClick={() => prev()}>上一步</Button>
<Button disabled={connect !== '连接成功'} type="primary" onClick={() => { <Button
// disabled={connect !== '连接成功'}
type="primary" onClick={() => {
if (checkNext() === true) { if (checkNext() === true) {
stepTwoValuesFinish(params) stepTwoValuesFinish(params)
next() next()

10
web/client/src/sections/metadataAcquisition/containers/dataSourceManagement.js

@ -125,13 +125,19 @@ function DataSourceManagement(props) {
} }
if (editData) { if (editData) {
dispatch(actions.metadataAcquisition.modifyDataSource(editData?.id, dataToSave)).then(res => { dispatch(actions.metadataAcquisition.modifyDataSource(editData?.id, dataToSave)).then(res => {
setVisible(false) if (res.success) {
setVisible(false);
setEditData(null);
queryData(); queryData();
}
}) })
} else { } else {
dispatch(actions.metadataAcquisition.addDataSource(dataToSave)).then(res => { dispatch(actions.metadataAcquisition.addDataSource(dataToSave)).then(res => {
setVisible(false) if (res.success) {
setVisible(false);
setEditData(null);
queryData(); queryData();
}
}) })
} }
} }

Loading…
Cancel
Save