Skip to content

Commit 421ff59

Browse files
committed
refactor: add schema
1 parent 5a5b2e8 commit 421ff59

File tree

4 files changed

+60
-9
lines changed

4 files changed

+60
-9
lines changed

frontend/src/api/datasource.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ export const datasourceApi = {
2222
saveField: (data: any) => request.post('/datasource/editField', data),
2323
getDs: (id: number) => request.post(`/datasource/get/${id}`),
2424
cancelRequests: () => request.cancelRequests(),
25+
getSchema: (data: any) => request.post('/datasource/getSchemaByConf', data)
2526
}

frontend/src/i18n/en.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@
270270
"field_original_notes": "Field original notes",
271271
"field_notes_1": "Field notes",
272272
"no_table": "No Table",
273-
"go_add": "Add"
273+
"go_add": "Add",
274+
"get_schema": "Get Schema"
274275
},
275276
"model": {
276277
"default_model": "Default model",
@@ -618,4 +619,4 @@
618619
"setting_successfully": "Setting Successfully",
619620
"customize_theme_color": "Customize theme color"
620621
}
621-
}
622+
}

frontend/src/i18n/zh-CN.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@
270270
"field_original_notes": "字段原始备注",
271271
"field_notes_1": "字段备注",
272272
"no_table": "暂无数据表",
273-
"go_add": "去添加"
273+
"go_add": "去添加",
274+
"get_schema": "获取Schema"
274275
},
275276
"model": {
276277
"default_model": "默认模型",
@@ -618,4 +619,4 @@
618619
"setting_successfully": "设置成功",
619620
"customize_theme_color": "自定义主题色"
620621
}
621-
}
622+
}

frontend/src/views/ds/DatasourceForm.vue

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const getUploadURL = import.meta.env.VITE_API_BASE_URL + '/datasource/uploadExce
4646
const saveLoading = ref<boolean>(false)
4747
const uploadLoading = ref(false)
4848
const { t } = useI18n()
49+
const schemaList = ref<any>([])
4950
5051
const rules = reactive<FormRules>({
5152
name: [
@@ -340,6 +341,16 @@ const check = () => {
340341
})
341342
}
342343
344+
const getSchema = () => {
345+
schemaList.value = []
346+
const requestObj = buildConf()
347+
datasourceApi.getSchema(requestObj).then((res: any) => {
348+
for (let item of res) {
349+
schemaList.value.push({ label: item, value: item })
350+
}
351+
})
352+
}
353+
343354
onBeforeUnmount(() => (saveLoading.value = false))
344355
345356
const next = debounce(async (formEl: FormInstance | undefined) => {
@@ -644,13 +655,30 @@ defineExpose({
644655
"
645656
/>
646657
</el-form-item>
647-
<el-form-item v-if="haveSchema.includes(form.type)" label="Schema" prop="dbSchema">
648-
<el-input
658+
<el-form-item v-if="haveSchema.includes(form.type)" class="schema-label" prop="dbSchema">
659+
<template #label>
660+
<span class="name">Schema<i class="required" /></span>
661+
<el-button text size="small" @click="getSchema">
662+
<template #icon>
663+
<Icon name="icon_add_outlined">
664+
<Plus class="svg-icon" />
665+
</Icon>
666+
</template>
667+
{{ t('datasource.get_schema') }}
668+
</el-button>
669+
</template>
670+
<el-select
649671
v-model="form.dbSchema"
650-
clearable
672+
filterable
651673
:placeholder="$t('datasource.please_enter') + $t('common.empty') + 'Schema'"
652-
/>
653-
<el-button v-if="false" link type="primary" :icon="Plus">Get Schema</el-button>
674+
>
675+
<el-option
676+
v-for="item in schemaList"
677+
:key="item.value"
678+
:label="item.label"
679+
:value="item.value"
680+
/>
681+
</el-select>
654682
</el-form-item>
655683
<el-form-item :label="t('ds.form.timeout')" prop="timeout">
656684
<el-input-number
@@ -905,4 +933,24 @@ defineExpose({
905933
}
906934
}
907935
}
936+
937+
.schema-label {
938+
::v-deep(.ed-form-item__label) {
939+
display: flex !important;
940+
justify-content: space-between;
941+
padding-right: 0;
942+
943+
&::after {
944+
display: none;
945+
}
946+
947+
.name {
948+
.required::after {
949+
content: '*';
950+
color: #f54a45;
951+
margin-left: 2px;
952+
}
953+
}
954+
}
955+
}
908956
</style>

0 commit comments

Comments
 (0)