diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 161ab1e32..79785f644 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -494,6 +494,20 @@ module.exports = { return res.result || null; }, + saveRedisData_meta: true, + async saveRedisData({ conid, database, changeSet }, req) { + await testConnectionPermission(conid, req); + + const opened = await this.ensureOpened(conid, database); + const res = await this.sendRequest(opened, { msgtype: 'saveRedisData', changeSet }); + if (res.errorMessage) { + return { + errorMessage: res.errorMessage, + }; + } + return res.result || null; + }, + status_meta: true, async status({ conid, database }, req) { if (!conid) { diff --git a/packages/api/src/proc/databaseConnectionProcess.js b/packages/api/src/proc/databaseConnectionProcess.js index bed349355..e360311a5 100644 --- a/packages/api/src/proc/databaseConnectionProcess.js +++ b/packages/api/src/proc/databaseConnectionProcess.js @@ -368,6 +368,30 @@ async function handleSaveTableData({ msgid, changeSet }) { } } +async function handleSaveRedisData({ msgid, changeSet }) { + try { + const driver = requireEngineDriver(storedConnection); + + if (!changeSet || !changeSet.changes || !Array.isArray(changeSet.changes)) { + throw new Error('Invalid changeSet structure'); + } + + for (const change of changeSet.changes) { + if (change.type === 'string') { + await driver.query(dbhan, `SET "${change.key}" "${change.value}"`); + } + } + + process.send({ msgtype: 'response', msgid }); + } catch (err) { + process.send({ + msgtype: 'response', + msgid, + errorMessage: extractErrorMessage(err, 'Error saving Redis data'), + }); + } +} + async function handleSqlPreview({ msgid, objects, options }) { await waitStructure(); const driver = requireEngineDriver(storedConnection); @@ -501,6 +525,7 @@ const messageHandlers = { schemaList: handleSchemaList, executeSessionQuery: handleExecuteSessionQuery, evalJsonScript: handleEvalJsonScript, + saveRedisData: handleSaveRedisData, // runCommand: handleRunCommand, }; diff --git a/packages/web/src/tabs/DbKeyDetailTab.svelte b/packages/web/src/tabs/DbKeyDetailTab.svelte index b470a2c7e..1631a98e1 100644 --- a/packages/web/src/tabs/DbKeyDetailTab.svelte +++ b/packages/web/src/tabs/DbKeyDetailTab.svelte @@ -198,7 +198,7 @@ async function saveAll() { console.log('Saving all changes:', changeSetRedis); - await apiCall('database-connections/apply-redis-change-set', { + await apiCall('database-connections/save-redis-data', { conid, database, changeSet: changeSetRedis,