From ff570d526876dea908486f237f82a771def07bd5 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 13 Jul 2026 00:39:30 +0800 Subject: [PATCH] fix(redis): recognize ZRANDMEMBER command --- apps/desktop/src/lib/redis/redisCommandTable.ts | 1 + packages/app-tests/redisSyntaxDiagnostics.test.ts | 8 ++++++++ 2 files changed, 9 insertions(+) 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", () => {