Add field insert functionality for Redis data types

This commit is contained in:
Stela Augustinova
2025-12-23 19:04:41 +01:00
parent 7281ee1565
commit 6689849f97

View File

@@ -393,18 +393,52 @@ async function handleSaveRedisData({ msgid, changeSet }) {
} }
} }
} }
if (change.inserts && Array.isArray(change.inserts)) {
for (const insert of change.inserts) {
await driver.query(dbhan, `HSET "${change.key}" "${insert.key}" "${insert.value}"`);
if (insert.ttl !== undefined && insert.ttl !== null && insert.ttl !== -1) {
try {
await dbhan.client.call('HEXPIRE', change.key, insert.ttl, 'FIELDS', 1, insert.key);
} catch (e) {}
}
}
}
} else if (change.type === 'zset') { } else if (change.type === 'zset') {
if (change.updates && Array.isArray(change.updates)) { if (change.updates && Array.isArray(change.updates)) {
for (const update of change.updates) { for (const update of change.updates) {
await driver.query(dbhan, `ZADD "${change.key}" ${update.score} "${update.member}"`); await driver.query(dbhan, `ZADD "${change.key}" ${update.score} "${update.member}"`);
} }
} }
if (change.inserts && Array.isArray(change.inserts)) {
for (const insert of change.inserts) {
await driver.query(dbhan, `ZADD "${change.key}" ${insert.score} "${insert.member}"`);
}
}
} else if (change.type === 'list') { } else if (change.type === 'list') {
if (change.updates && Array.isArray(change.updates)) { if (change.updates && Array.isArray(change.updates)) {
for (const update of change.updates) { for (const update of change.updates) {
await driver.query(dbhan, `LSET "${change.key}" ${update.index} "${update.value}"`); await driver.query(dbhan, `LSET "${change.key}" ${update.index} "${update.value}"`);
} }
} }
if (change.inserts && Array.isArray(change.inserts)) {
for (const insert of change.inserts) {
await driver.query(dbhan, `RPUSH "${change.key}" "${insert.value}"`);
}
}
} else if (change.type === 'set') {
if (change.inserts && Array.isArray(change.inserts)) {
for (const insert of change.inserts) {
await driver.query(dbhan, `SADD "${change.key}" "${insert.value}"`);
}
}
} else if (change.type === 'stream') {
if (change.inserts && Array.isArray(change.inserts)) {
for (const insert of change.inserts) {
const streamId = insert.id === '*' || !insert.id ? '*' : insert.id;
await driver.query(dbhan, `XADD "${change.key}" ${streamId} value "${insert.value}"`);
}
}
} }
} }