Skip to content

Commit 275816f

Browse files
committed
Merge branch 'bugfix/redis_folder_tree'
2 parents 9ecbdd4 + 3561733 commit 275816f

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

src/model/redis/folderNode.ts

+6-8
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,28 @@ import RedisBaseNode from "./redisBaseNode";
88
export class FolderNode extends RedisBaseNode {
99
contextValue = ModelType.REDIS_FOLDER;
1010
readonly iconPath = path.join(Constants.RES_PATH, `image/folder.svg`);
11-
constructor(readonly label: string, readonly prefix: string, readonly childens: string[], readonly parent: Node) {
11+
constructor(readonly label: string, readonly childens: string[], readonly parent: Node) {
1212
super(label)
1313
this.init(parent)
1414
this.pattern = label
15+
this.level = parent.hasOwnProperty('level') ? parent.level + 1 : 0
1516
}
1617

1718
public async getChildren() {
18-
return FolderNode.buildChilds(this, `${this.prefix}${this.label}`, this.childens)
19+
return FolderNode.buildChilds(this, this.childens)
1920
}
2021

21-
public static buildChilds(parent: RedisBaseNode, parentPrefix: string, keys: string[]) {
22-
if (parentPrefix) {
23-
parentPrefix = parentPrefix + ":"
24-
}
22+
public static buildChilds(parent: RedisBaseNode, keys: string[]) {
2523
const prefixMap: { [key: string]: string[] } = {}
2624
for (const key of keys.sort()) {
27-
let prefix = key.replace(parentPrefix, "").split(":")[0];
25+
let prefix = key.split(":")[parent.level];
2826
if (!prefixMap[prefix]) prefixMap[prefix] = []
2927
prefixMap[prefix].push(key)
3028
}
3129

3230
return Object.keys(prefixMap).map((prefix: string) => {
3331
if (prefixMap[prefix].length > 1) {
34-
return new FolderNode(prefix, parentPrefix, prefixMap[prefix], parent)
32+
return new FolderNode(prefix, prefixMap[prefix], parent)
3533
} else {
3634
return new KeyNode(prefixMap[prefix][0], prefix, parent)
3735
}

src/model/redis/redisBaseNode.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { RedisClient } from "redis";
55

66
export default abstract class RedisBaseNode extends Node {
77
pattern = "*";
8+
level = 0;
9+
810
abstract getChildren(): Promise<Node[]>;
911

1012
public async getClient(): Promise<RedisClient> {

src/model/redis/redisConnectionNode.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class RedisConnectionNode extends RedisBaseNode {
2828
async getChildren(): Promise<RedisBaseNode[]> {
2929
const client = await this.getClient()
3030
let keys: string[] = await promisify(client.keys).bind(client)(this.pattern);
31-
return FolderNode.buildChilds(this, "", keys)
31+
return FolderNode.buildChilds(this, keys)
3232
}
3333
async openTerminal(): Promise<any> {
3434
const client = await this.getClient()

0 commit comments

Comments
 (0)