Merge pull request #1307 from dbgate/feature/redis-gui-refactor

Feature/redis gui refactor
This commit is contained in:
Jan Prochazka
2025-12-29 15:18:32 +01:00
committed by GitHub
22 changed files with 1812 additions and 114 deletions

View File

@@ -459,6 +459,15 @@ const driver = {
case 'string':
res.value = await dbhan.client.get(key);
break;
case 'ReJSON-RL':
res.type = 'JSON';
try {
const jsonData = await dbhan.client.call('JSON.GET', key);
res.value = JSON.stringify(JSON.parse(jsonData), null, 2);
} catch (e) {
res.value = '';
}
break;
// case 'list':
// res.tableColumns = [{ name: 'value' }];
// res.addMethod = 'rpush';
@@ -495,6 +504,10 @@ const driver = {
switch (method) {
case 'mdel':
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 {
@@ -528,14 +541,28 @@ const driver = {
const res = await dbhan.client.zscan(key, cursor, 'COUNT', count);
return {
cursor: parseInt(res[0]),
items: _.chunk(res[1], 2).map((item) => ({ value: item[0], score: item[1] })),
items: _.chunk(res[1], 2).map((item) => ({ member: item[0], score: item[1] })),
};
}
case 'hash': {
const res = await dbhan.client.hscan(key, cursor, 'COUNT', count);
const fields = _.chunk(res[1], 2);
// Get TTL for each hash field (Redis 7.4+)
const items = await Promise.all(
fields.map(async ([fieldKey, fieldValue]) => {
try {
const ttl = await dbhan.client.call('HTTL', key, 'FIELDS', 1, fieldKey);
return { key: fieldKey, value: fieldValue, TTL: ttl && ttl[0] !== undefined ? ttl[0] : null };
} catch (e) {
return { key: fieldKey, value: fieldValue };
}
})
);
return {
cursor: parseInt(res[0]),
items: _.chunk(res[1], 2).map((item) => ({ key: item[0], value: item[1] })),
items,
};
}
case 'stream': {

View File

@@ -49,7 +49,7 @@ const driver = {
{
name: 'set',
label: 'Set',
dbKeyFields: [{ name: 'value' }],
dbKeyFields: [{ name: 'value', readOnly: true }],
keyColumn: 'value',
addMethod: 'sadd',
showItemList: true,
@@ -57,15 +57,15 @@ const driver = {
{
name: 'zset',
label: 'Sorted Set',
dbKeyFields: [{ name: 'score' }, { name: 'value' }],
keyColumn: 'value',
dbKeyFields: [{ name: 'member', readOnly: true }, { name: 'score' }],
keyColumn: 'member',
addMethod: 'zadd',
showItemList: true,
},
{
name: 'hash',
label: 'Hash',
dbKeyFields: [{ name: 'key' }, { name: 'value' }],
dbKeyFields: [{ name: 'key', readOnly: true }, { name: 'value' }, { name: 'TTL' }],
keyColumn: 'key',
addMethod: 'hset',
showItemList: true,
@@ -73,11 +73,17 @@ const driver = {
{
name: 'stream',
label: 'Stream',
dbKeyFields: [{ name: 'id' }, { name: 'value' }],
dbKeyFields: [{ name: 'id', readOnly: true }, { name: 'value', readOnly: true }],
keyColumn: 'id',
addMethod: 'xaddjson',
showItemList: true,
},
{
name: 'json',
label: 'JSON',
dbKeyFields: [{ name: 'value' }],
addMethod: 'json.set',
}
],
showConnectionField: (field, values) => {