From 8fa1459e5b955890a7ad4efe43fbe482e9efa2f1 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Wed, 10 Dec 2025 14:32:36 +0100 Subject: [PATCH] Add support for ReJSON-RL commands and JSON data type in Redis driver --- plugins/dbgate-plugin-redis/src/backend/driver.js | 10 ++++++++++ plugins/dbgate-plugin-redis/src/frontend/driver.js | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/plugins/dbgate-plugin-redis/src/backend/driver.js b/plugins/dbgate-plugin-redis/src/backend/driver.js index fb0e9bacd..1385e90da 100644 --- a/plugins/dbgate-plugin-redis/src/backend/driver.js +++ b/plugins/dbgate-plugin-redis/src/backend/driver.js @@ -451,6 +451,14 @@ const driver = { case 'string': res.value = await dbhan.client.get(key); break; + case 'ReJSON-RL': + res.type = 'json'; + try { + res.value = JSON.stringify(await dbhan.client.call('JSON.GET', key), null, 2); + } catch (e) { + res.value = ''; + } + break; // case 'list': // res.tableColumns = [{ name: 'value' }]; // res.addMethod = 'rpush'; @@ -489,6 +497,8 @@ const driver = { return await this.deleteBranch(dbhan, args[0]); case 'zadd': return await dbhan.client.zadd(args[0], args[2], args[1]); + case 'json.set': + return await dbhan.client.call('JSON.SET', args[0], '$', args[1]); case 'xaddjson': let json; try { diff --git a/plugins/dbgate-plugin-redis/src/frontend/driver.js b/plugins/dbgate-plugin-redis/src/frontend/driver.js index 80956b306..bb24ba02b 100644 --- a/plugins/dbgate-plugin-redis/src/frontend/driver.js +++ b/plugins/dbgate-plugin-redis/src/frontend/driver.js @@ -76,6 +76,12 @@ const driver = { addMethod: 'xaddjson', showItemList: true, }, + { + name: 'json', + label: 'JSON', + dbKeyFields: [{ name: 'value' }], + addMethod: 'json.set', + } ], showConnectionField: (field, values) => {