refactor: optimize the key renaming logic

This commit is contained in:
tiny-craft 2023-11-09 00:30:07 +08:00
parent 9618990de8
commit 352e7b714d
1 changed files with 30 additions and 2 deletions

View File

@ -5,6 +5,7 @@ import {
get, get,
isEmpty, isEmpty,
join, join,
last,
remove, remove,
set, set,
size, size,
@ -1367,6 +1368,34 @@ const useBrowserStore = defineStore('browser', {
} }
}, },
/**
*
* @param {string} connName
* @param {number} db
* @param {string} key
* @param {string} newKey
* @private
*/
_renameKeyNode(connName, db, key, newKey) {
const nodeMap = this._getNodeMap(connName, db)
const nodeKey = `${ConnectionType.RedisValue}/${key}`
const newNodeKey = `${ConnectionType.RedisValue}/${newKey}`
const node = nodeMap.get(nodeKey)
if (node != null) {
// replace node map item
const separator = this._getSeparator(connName)
node.label = last(split(newKey, separator))
node.key = `${connName}/db${db}#${newNodeKey}`
node.redisKey = newKey
nodeMap[newNodeKey] = node
nodeMap.delete(nodeKey)
// replace key set item
const keySet = this._getKeySet(connName, db)
keySet.delete(key)
keySet.add(newKey)
}
},
/** /**
* *
* @param {string} connName * @param {string} connName
@ -1582,8 +1611,7 @@ const useBrowserStore = defineStore('browser', {
const { success = false, msg } = await RenameKey(connName, db, key, newKey) const { success = false, msg } = await RenameKey(connName, db, key, newKey)
if (success) { if (success) {
// delete old key and add new key struct // delete old key and add new key struct
this._deleteKeyNode(connName, db, key) this._renameKeyNode(connName, db, key, newKey)
this._addKeyNodes(connName, db, [newKey])
return { success: true, nodeKey: `${connName}/db${db}#${ConnectionType.RedisValue}/${newKey}` } return { success: true, nodeKey: `${connName}/db${db}#${ConnectionType.RedisValue}/${newKey}` }
} else { } else {
return { success: false, msg } return { success: false, msg }