in seatunnel-ui/src/views/datasource/create/use-detail.ts [29:119]
export function useDetail(
getFieldsValue: Function,
setFieldsValue: Function,
getFormItems: Function,
detailFormRef: Ref,
id: string
) {
const { t } = useI18n()
const router = useRouter()
const status = reactive({
saving: false,
testing: false,
loading: false
})
const formatParams = () => {
const values = getFieldsValue()
return {
datasourceName: values.datasourceName,
pluginName: values.pluginName,
description: values.description,
datasourceConfig: JSON.stringify(
omit(values, ['pluginName', 'datasourceName', 'description'])
)
}
}
const queryById = async () => {
try {
const result = await datasourceDetail(id)
await getFormItems(result.pluginName)
setFieldsValue({
datasourceName: result.datasourceName,
pluginName: result.pluginName,
description: result.description,
...result.datasourceConfig
})
} finally {}
}
const testConnect = async () => {
await detailFormRef.value.validate()
if (status.testing) return
status.testing = true
const values = getFieldsValue()
try {
const result = await checkConnect({
pluginName: values.pluginName,
datasourceConfig: omit(values, ['pluginName', 'datasourceName', 'description'])
})
window.$message.success(
result.msg ? result.msg : `${t('datasource.test_connect_success')}`
)
status.testing = false
} catch (err) {
status.testing = false
}
}
const createOrUpdate = async () => {
await detailFormRef.value.validate()
if (status.saving) return false
status.saving = true
try {
id
? await datasourceUpdate(formatParams(), id)
: await datasourceAdd(formatParams())
status.saving = false
router.push({
name: 'datasource-list',
query: {}
})
return true
} catch (err) {
status.saving = false
return false
}
}
onMounted(() => {
if (id) {
queryById()
}
})
return { status, testConnect, createOrUpdate }
}