From 6cc15ebedab8a65ec87c18fc286e114b84e8233d Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Tue, 26 Nov 2024 17:32:44 +0800 Subject: [PATCH] feat: tag refactor & other --- frontend/{.eslintrc.js => .eslintrc.cjs} | 0 frontend/src/common/assert.ts | 7 +- frontend/src/common/commonEnum.ts | 17 ++- frontend/src/common/config.ts | 2 +- frontend/src/views/flow/ProcdefEdit.vue | 4 +- .../views/flow/flowbiz/dbms/DbSqlExecBiz.vue | 2 +- .../flowbiz/dbms/DbSqlExecFlowBizForm.vue | 2 +- frontend/src/views/home/Home.vue | 11 +- .../ops/component/ResourceAuthCertEdit.vue | 8 +- frontend/src/views/ops/component/TagTree.vue | 2 +- .../src/views/ops/component/TagTreeCheck.vue | 2 +- .../ops/component/TagTreeResourceSelect.vue | 2 +- frontend/src/views/ops/component/tag.ts | 18 +-- frontend/src/views/ops/db/DbEdit.vue | 2 +- frontend/src/views/ops/db/InstanceEdit.vue | 4 +- frontend/src/views/ops/db/InstanceList.vue | 14 +- frontend/src/views/ops/db/SqlExec.vue | 6 +- .../views/ops/db/component/DbSelectTree.vue | 4 +- .../db/component/sqleditor/DbSqlEditor.vue | 2 +- .../ops/db/component/table/DbTableData.vue | 2 +- .../ops/db/component/table/DbTableOp.vue | 2 +- frontend/src/views/ops/db/db.ts | 69 +++++---- .../src/views/ops/machine/MachineList.vue | 4 +- frontend/src/views/ops/machine/MachineOp.vue | 4 +- .../views/ops/machine/cronjob/CronJobEdit.vue | 6 +- .../ops/machine/security/CmdConfList.vue | 8 +- frontend/src/views/ops/redis/RedisEdit.vue | 2 +- frontend/src/views/ops/tag/TagTreeList.vue | 2 +- frontend/src/views/ops/tag/api.ts | 2 +- server/internal/db/api/db.go | 2 +- server/internal/db/api/db_instance.go | 4 +- server/internal/db/api/db_transfer.go | 16 +- server/internal/db/application/db.go | 4 +- server/internal/db/application/db_instance.go | 2 +- server/internal/db/dbm/dbi/conn.go | 137 +++--------------- server/internal/db/dbm/dbi/dialect.go | 78 ++++++++++ server/internal/db/dbm/dm/helper.go | 56 +++++++ server/internal/db/dbm/mssql/helper.go | 1 + server/internal/db/dbm/mysql/helper.go | 1 + server/internal/db/dbm/oracle/helper.go | 1 + server/internal/db/dbm/postgres/helper.go | 1 + server/internal/db/dbm/sqlite/helper.go | 19 +-- server/internal/machine/api/dashbord.go | 3 +- server/internal/machine/api/machine.go | 4 +- .../internal/machine/application/machine.go | 4 +- server/internal/mongo/api/mongo.go | 2 +- server/internal/redis/api/redis.go | 26 ++-- server/internal/tag/api/tag_tree.go | 20 ++- .../tag/application/resouce_auth_cert.go | 55 ++----- .../tag/application/resource_op_log.go | 15 +- server/internal/tag/application/tag_tree.go | 107 ++++++++++++-- .../internal/tag/application/tag_tree_test.go | 38 +++++ server/internal/tag/domain/entity/query.go | 23 ++- server/internal/tag/domain/entity/tag_tree.go | 16 +- server/internal/tag/router/tag_tree.go | 2 +- server/pkg/config/app.go | 2 +- server/resources/script/sql/v1.9/v1.9.2.sql | 3 + 57 files changed, 538 insertions(+), 314 deletions(-) rename frontend/{.eslintrc.js => .eslintrc.cjs} (100%) create mode 100644 server/internal/tag/application/tag_tree_test.go create mode 100644 server/resources/script/sql/v1.9/v1.9.2.sql diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.cjs similarity index 100% rename from frontend/.eslintrc.js rename to frontend/.eslintrc.cjs diff --git a/frontend/src/common/assert.ts b/frontend/src/common/assert.ts index 16e8808e..a4c004cb 100644 --- a/frontend/src/common/assert.ts +++ b/frontend/src/common/assert.ts @@ -30,7 +30,12 @@ export function isTrue(condition: boolean, msg: string) { * @param msg 错误消息 */ export function notBlank(obj: any, msg: string) { - isTrue(obj, msg); + if (obj == null || obj == undefined || obj == '') { + throw new AssertError(msg); + } + if (Array.isArray(obj) && obj.length == 0) { + throw new AssertError(msg); + } } /** diff --git a/frontend/src/common/commonEnum.ts b/frontend/src/common/commonEnum.ts index d320dd3d..9eae5aad 100644 --- a/frontend/src/common/commonEnum.ts +++ b/frontend/src/common/commonEnum.ts @@ -19,15 +19,22 @@ export const ResourceTypeEnum = { // 标签关联的资源类型 export const TagResourceTypeEnum = { - AuthCert: EnumValue.of(-2, '公共凭证').setExtra({ icon: 'Ticket' }), + PublicAuthCert: EnumValue.of(-2, '公共凭证').setExtra({ icon: 'Ticket' }), Tag: EnumValue.of(-1, '标签').setExtra({ icon: 'CollectionTag' }), Machine: ResourceTypeEnum.Machine, - Db: ResourceTypeEnum.Db, + DbInstance: ResourceTypeEnum.Db, Redis: ResourceTypeEnum.Redis, Mongo: ResourceTypeEnum.Mongo, + AuthCert: EnumValue.of(5, '授权凭证').setExtra({ icon: 'Ticket', iconColor: 'var(--el-color-success)' }), - MachineAuthCert: EnumValue.of(11, '机器-授权凭证').setExtra({ icon: 'Ticket', iconColor: 'var(--el-color-success)' }), - DbAuthCert: EnumValue.of(21, '数据库-授权凭证').setExtra({ icon: 'Ticket', iconColor: 'var(--el-color-success)' }), - DbName: EnumValue.of(22, '数据库').setExtra({ icon: 'Coin' }), + Db: EnumValue.of(22, '数据库').setExtra({ icon: 'Coin' }), +}; + +// 标签关联的资源类型路径 +export const TagResourceTypePath = { + MachineAuthCert: `${TagResourceTypeEnum.Machine.value}/${TagResourceTypeEnum.AuthCert.value}`, + + DbInstanceAuthCert: `${TagResourceTypeEnum.DbInstance.value}/${TagResourceTypeEnum.AuthCert.value}`, + Db: `${TagResourceTypeEnum.DbInstance.value}/${TagResourceTypeEnum.AuthCert.value}/${TagResourceTypeEnum.Db.value}`, }; diff --git a/frontend/src/common/config.ts b/frontend/src/common/config.ts index ad716390..855e674b 100644 --- a/frontend/src/common/config.ts +++ b/frontend/src/common/config.ts @@ -15,7 +15,7 @@ const config = { baseWsUrl: `${(window as any).globalConfig.BaseWsUrl || `${location.protocol == 'https:' ? 'wss:' : 'ws:'}//${getBaseApiUrl()}`}/api`, // 系统版本 - version: 'v1.9.1', + version: 'v1.9.2', }; export default config; diff --git a/frontend/src/views/flow/ProcdefEdit.vue b/frontend/src/views/flow/ProcdefEdit.vue index 94941be6..da3d6786 100755 --- a/frontend/src/views/flow/ProcdefEdit.vue +++ b/frontend/src/views/flow/ProcdefEdit.vue @@ -37,7 +37,7 @@ - + {{ $t('flow.approvalNode') }} @@ -94,7 +94,7 @@ import Sortable from 'sortablejs'; import { randomUuid } from '../../common/utils/string'; import { ProcdefStatus } from './enums'; import TagTreeCheck from '../ops/component/TagTreeCheck.vue'; -import { TagResourceTypeEnum } from '@/common/commonEnum'; +import { TagResourceTypeEnum, TagResourceTypePath } from '@/common/commonEnum'; import EnumSelect from '@/components/enumselect/EnumSelect.vue'; import { useI18nFormValidate, useI18nPleaseInput, useI18nSaveSuccessMsg } from '@/hooks/useI18n'; import { useI18n } from 'vue-i18n'; diff --git a/frontend/src/views/flow/flowbiz/dbms/DbSqlExecBiz.vue b/frontend/src/views/flow/flowbiz/dbms/DbSqlExecBiz.vue index 84916aad..50508561 100755 --- a/frontend/src/views/flow/flowbiz/dbms/DbSqlExecBiz.vue +++ b/frontend/src/views/flow/flowbiz/dbms/DbSqlExecBiz.vue @@ -95,7 +95,7 @@ const parseBizForm = async (bizFormStr: string) => { const dbRes = await dbApi.dbs.request({ id: bizForm.dbId }); state.db = dbRes.list?.[0]; - tagApi.listByQuery.request({ type: TagResourceTypeEnum.DbName.value, codes: state.db.code }).then((res) => { + tagApi.listByQuery.request({ type: TagResourceTypeEnum.Db.value, codes: state.db.code }).then((res) => { state.db.codePaths = res.map((item: any) => item.codePath); }); }; diff --git a/frontend/src/views/flow/flowbiz/dbms/DbSqlExecFlowBizForm.vue b/frontend/src/views/flow/flowbiz/dbms/DbSqlExecFlowBizForm.vue index ad9a360f..c43d8d2c 100755 --- a/frontend/src/views/flow/flowbiz/dbms/DbSqlExecFlowBizForm.vue +++ b/frontend/src/views/flow/flowbiz/dbms/DbSqlExecFlowBizForm.vue @@ -68,7 +68,7 @@ watch( ); const changeResourceCode = async (db: any) => { - emit('changeResourceCode', TagResourceTypeEnum.DbName.value, db.code); + emit('changeResourceCode', TagResourceTypeEnum.Db.value, db.code); }; const validateBizForm = async () => { diff --git a/frontend/src/views/home/Home.vue b/frontend/src/views/home/Home.vue index cf07dc72..8153c2cf 100644 --- a/frontend/src/views/home/Home.vue +++ b/frontend/src/views/home/Home.vue @@ -122,7 +122,12 @@