diff --git a/backend/app/dto/database.go b/backend/app/dto/database.go index 6406eb5f0..3e325995b 100644 --- a/backend/app/dto/database.go +++ b/backend/app/dto/database.go @@ -276,6 +276,7 @@ type DatabaseCreate struct { type DatabaseUpdate struct { ID uint `json:"id"` + Type string `json:"type" validate:"required"` Version string `json:"version" validate:"required"` Address string `json:"address"` Port uint `json:"port"` diff --git a/backend/app/service/database.go b/backend/app/service/database.go index 010d73fab..e7f2e6f8b 100644 --- a/backend/app/service/database.go +++ b/backend/app/service/database.go @@ -148,6 +148,7 @@ func (u *DatabaseService) Update(req dto.DatabaseUpdate) error { } upMap := make(map[string]interface{}) + upMap["type"] = req.Type upMap["version"] = req.Version upMap["address"] = req.Address upMap["port"] = req.Port diff --git a/frontend/src/store/index.ts b/frontend/src/store/index.ts index f8dffc1ef..212e8ac29 100644 --- a/frontend/src/store/index.ts +++ b/frontend/src/store/index.ts @@ -27,6 +27,7 @@ export const GlobalStore = defineStore({ ignoreCaptcha: true, device: DeviceType.Desktop, lastFilePath: '', + currentDB: '', }), getters: {}, actions: { @@ -64,6 +65,9 @@ export const GlobalStore = defineStore({ setLastFilePath(path: string) { this.lastFilePath = path; }, + setCurrentDB(name: string) { + this.currentDB = name; + }, }, persist: piniaPersistConfig('GlobalState'), }); diff --git a/frontend/src/store/interface/index.ts b/frontend/src/store/interface/index.ts index 563797705..97d656750 100644 --- a/frontend/src/store/interface/index.ts +++ b/frontend/src/store/interface/index.ts @@ -22,6 +22,7 @@ export interface GlobalState { ignoreCaptcha: boolean; device: DeviceType; lastFilePath: string; + currentDB: string; } export interface MenuState { diff --git a/frontend/src/views/database/mysql/index.vue b/frontend/src/views/database/mysql/index.vue index 5b2a8029d..59c9ba097 100644 --- a/frontend/src/views/database/mysql/index.vue +++ b/frontend/src/views/database/mysql/index.vue @@ -30,7 +30,7 @@ @@ -42,7 +42,7 @@ @@ -235,6 +235,8 @@ import router from '@/routers'; import { MsgError, MsgSuccess } from '@/utils/message'; import useClipboard from 'vue-clipboard3'; const { toClipboard } = useClipboard(); +import { GlobalStore } from '@/store'; +const globalStore = GlobalStore(); const loading = ref(false); const maskShow = ref(true); @@ -293,12 +295,14 @@ const onChangeConn = async () => { }; const goRemoteDB = async () => { + globalStore.setCurrentDB(currentDB.value.database); router.push({ name: 'MySQL-Remote' }); }; const passwordRef = ref(); const onSetting = async () => { + globalStore.setCurrentDB(currentDB.value.database); router.push({ name: 'MySQL-Setting', params: { type: currentDB.value.type, database: currentDB.value.database } }); }; @@ -401,13 +405,26 @@ const loadDBOptions = async () => { let datas = res.data || []; dbOptionsLocal.value = []; dbOptionsRemote.value = []; + currentDBName.value = globalStore.currentDB; for (const item of datas) { + if (currentDBName.value && item.database === currentDBName.value) { + currentDB.value = item; + if (item.from === 'local') { + appKey.value = item.type; + appName.value = item.database; + } + } if (item.from === 'local') { dbOptionsLocal.value.push(item); } else { dbOptionsRemote.value.push(item); } } + if (currentDB.value) { + globalStore.setCurrentDB(''); + search(); + return; + } if (dbOptionsLocal.value.length !== 0) { currentDB.value = dbOptionsLocal.value[0]; currentDBName.value = dbOptionsLocal.value[0].database; diff --git a/frontend/src/views/database/mysql/remote/operate/index.vue b/frontend/src/views/database/mysql/remote/operate/index.vue index 485541e23..a8d12e10e 100644 --- a/frontend/src/views/database/mysql/remote/operate/index.vue +++ b/frontend/src/views/database/mysql/remote/operate/index.vue @@ -99,6 +99,18 @@ const loading = ref(); const acceptParams = (params: DialogProps): void => { dialogData.value = params; + if (dialogData.value.rowData.version.startsWith('5.6')) { + dialogData.value.rowData.version = '5.6'; + } + if (dialogData.value.rowData.version.startsWith('5.7')) { + dialogData.value.rowData.version = '5.7'; + } + if (dialogData.value.rowData.version.startsWith('8.')) { + dialogData.value.rowData.version = '8.x'; + } + if (dialogData.value.rowData.version.startsWith('10.')) { + dialogData.value.rowData.version = '10.x'; + } title.value = i18n.global.t('database.' + dialogData.value.title + 'RemoteDB'); drawerVisiable.value = true; };