Thanks to visit codestin.com
Credit goes to github.com

Skip to content
12 changes: 12 additions & 0 deletions pkg/commands/set.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,18 @@ Deno.test("get", async (t) => {
assertEquals(res, old);
});
});

Deno.test("get with xx", async (t) => {
await t.step("gets the old value", async () => {
const key = newKey();
const old = randomID();
const value = randomID();
await new SetCommand([key, old]).exec(client);

const res = await new SetCommand([key, value, { get: true, xx: true }]).exec(client);
assertEquals(res, old);
});
});
Deno.test("nx", async (t) => {
await t.step("when key exists", async (t) => {
await t.step("does nothing", async () => {
Expand Down
14 changes: 7 additions & 7 deletions pkg/commands/set.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import { Command, CommandOptions } from "./command.ts";

export type SetCommandOptions =
| { get: boolean }
| (
& { get?: boolean }
& (
| { ex: number; px?: never; exat?: never; pxat?: never; keepTtl?: never }
| { ex?: never; px: number; exat?: never; pxat?: never; keepTtl?: never }
| { ex?: never; px?: never; exat: number; pxat?: never; keepTtl?: never }
| { ex?: never; px?: never; exat?: never; pxat: number; keepTtl?: never }
| { ex?: never; px?: never; exat?: never; pxat?: never; keepTtl: true }
| { ex?: never; px?: never; exat?: never; pxat?: never; keepTtl?: never }
)
& (
| { nx: true; xx?: never }
| { xx: true; nx?: never }
| { xx?: never; nx?: never }
);
& (
| { nx: true; xx?: never }
| { xx: true; nx?: never }
| { xx?: never; nx?: never }
);

/**
* @see https://redis.io/commands/set
Expand Down
2 changes: 1 addition & 1 deletion version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = "development";
export const VERSION = "development"