diff --git a/apps/desktop/src/lib/redis/redisCommandTable.ts b/apps/desktop/src/lib/redis/redisCommandTable.ts index 81656fd7bf..4fb2f18a23 100644 --- a/apps/desktop/src/lib/redis/redisCommandTable.ts +++ b/apps/desktop/src/lib/redis/redisCommandTable.ts @@ -217,6 +217,7 @@ const RAW_COMMANDS: Record = { ZMSCORE: [-3, "zset"], ZPOPMAX: [-2, "zset", "confirm"], ZPOPMIN: [-2, "zset", "confirm"], + ZRANDMEMBER: [-2, "zset"], ZRANGE: [-4, "zset"], ZRANGEBYLEX: [-4, "zset"], ZRANGEBYSCORE: [-4, "zset"], diff --git a/packages/app-tests/redisSyntaxDiagnostics.test.ts b/packages/app-tests/redisSyntaxDiagnostics.test.ts index a047995041..21562bf39b 100644 --- a/packages/app-tests/redisSyntaxDiagnostics.test.ts +++ b/packages/app-tests/redisSyntaxDiagnostics.test.ts @@ -10,6 +10,14 @@ test("reports no diagnostics for read-only valid commands", () => { assert.deepEqual(messages("GET foo"), []); assert.deepEqual(messages("HGETALL k"), []); assert.deepEqual(messages("SCAN 0"), []); + assert.deepEqual(messages("ZRANDMEMBER leaderboard 2 WITHSCORES"), []); +}); + +test("recognizes set store commands as writes", () => { + const diags = buildRedisSyntaxDiagnostics("SDIFFSTORE destination source-a source-b"); + assert.equal(diags.length, 1); + assert.equal(diags[0].severity, "warning"); + assert.doesNotMatch(diags[0].message, /Unknown command/); }); test("flags unknown command name", () => {