delete branch operation

This commit is contained in:
Jan Prochazka
2022-03-26 08:12:56 +01:00
parent fc08353225
commit 9e3991556a
3 changed files with 47 additions and 10 deletions

View File

@@ -71,17 +71,17 @@ const driver = {
},
async loadKeys(pool, root = '') {
const keys = await this.getKeys(pool, root);
const keys = await this.getKeys(pool, root ? `${root}:*` : '*');
const res = this.extractKeysFromLevel(root, keys);
await this.enrichKeyInfo(pool, res);
return res;
},
async getKeys(pool, root = '') {
async getKeys(pool, keyQuery = '*') {
const res = [];
let cursor = 0;
do {
const [strCursor, keys] = await pool.scan(cursor, 'MATCH', root ? `${root}:*` : '*', 'COUNT', 100);
const [strCursor, keys] = await pool.scan(cursor, 'MATCH', keyQuery, 'COUNT', 100);
res.push(...keys);
cursor = parseInt(strCursor);
} while (cursor > 0);
@@ -187,7 +187,17 @@ const driver = {
return res;
},
async deleteBranch(pool, keyQuery) {
const keys = await this.getKeys(pool, keyQuery);
const keysChunked = _.chunk(keys, 10);
await async.eachLimit(keysChunked, 10, async (keysChunk) => await pool.del(...keysChunk));
},
async callMethod(pool, method, args) {
switch (method) {
case 'mdel':
return await this.deleteBranch(pool, args[0]);
}
return await pool[method](...args);
},