1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00

Support new expire features (#2036)

* Support new expire features

* Update PEXPIRETIME.ts

* Update EXPIRETIME.ts

* fix version skip

* clean code

Co-authored-by: leibale <leibale1998@gmail.com>
This commit is contained in:
Avital Fine
2022-03-24 15:17:01 +01:00
committed by GitHub
parent c5c2bf9042
commit 24cd9ba9a4
13 changed files with 144 additions and 18 deletions

View File

@@ -3,11 +3,20 @@ import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments } from './EXPIRE';
describe('EXPIRE', () => {
it('transformArguments', () => {
assert.deepEqual(
transformArguments('key', 1),
['EXPIRE', 'key', '1']
);
describe('transformArguments', () => {
it('simple', () => {
assert.deepEqual(
transformArguments('key', 1),
['EXPIRE', 'key', '1']
);
});
it('with set option', () => {
assert.deepEqual(
transformArguments('key', 1, 'NX'),
['EXPIRE', 'key', '1', 'NX']
);
});
});
testUtils.testWithClient('client.expire', async client => {

View File

@@ -4,9 +4,16 @@ export const FIRST_KEY_INDEX = 1;
export function transformArguments(
key: RedisCommandArgument,
seconds: number
seconds: number,
mode?: 'NX' | 'XX' | 'GT' | 'LT'
): RedisCommandArguments {
return ['EXPIRE', key, seconds.toString()];
const args = ['EXPIRE', key, seconds.toString()];
if (mode) {
args.push(mode);
}
return args;
}
export { transformBooleanReply as transformReply } from './generic-transformers';

View File

@@ -18,6 +18,13 @@ describe('EXPIREAT', () => {
['EXPIREAT', 'key', Math.floor(d.getTime() / 1000).toString()]
);
});
it('with set option', () => {
assert.deepEqual(
transformArguments('key', 1, 'GT'),
['EXPIREAT', 'key', '1', 'GT']
);
});
});
testUtils.testWithClient('client.expireAt', async client => {

View File

@@ -5,13 +5,20 @@ export const FIRST_KEY_INDEX = 1;
export function transformArguments(
key: RedisCommandArgument,
timestamp: number | Date
timestamp: number | Date,
mode?: 'NX' | 'XX' | 'GT' | 'LT'
): RedisCommandArguments {
return [
const args = [
'EXPIREAT',
key,
transformEXAT(timestamp)
];
if (mode) {
args.push(mode);
}
return args;
}
export { transformBooleanReply as transformReply } from './generic-transformers';

View File

@@ -0,0 +1,21 @@
import { strict as assert } from 'assert';
import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments } from './EXPIRETIME';
describe('EXPIRETIME', () => {
testUtils.isVersionGreaterThanHook([7, 0]);
it('transformArguments', () => {
assert.deepEqual(
transformArguments('key'),
['EXPIRETIME', 'key']
);
});
testUtils.testWithClient('client.expireTime', async client => {
assert.equal(
await client.expireTime('key'),
-2
);
}, GLOBAL.SERVERS.OPEN);
});

View File

@@ -0,0 +1,9 @@
import { RedisCommandArgument, RedisCommandArguments } from '.';
export const FIRST_KEY_INDEX = 1;
export function transformArguments(key: RedisCommandArgument): RedisCommandArguments {
return ['EXPIRETIME', key];
}
export declare function transformReply(): number;

View File

@@ -3,11 +3,20 @@ import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments } from './PEXPIRE';
describe('PEXPIRE', () => {
it('transformArguments', () => {
assert.deepEqual(
transformArguments('key', 1),
['PEXPIRE', 'key', '1']
);
describe('transformArguments', () => {
it('simple', () => {
assert.deepEqual(
transformArguments('key', 1),
['PEXPIRE', 'key', '1']
);
});
it('with set option', () => {
assert.deepEqual(
transformArguments('key', 1, 'GT'),
['PEXPIRE', 'key', '1', 'GT']
);
});
});
testUtils.testWithClient('client.pExpire', async client => {

View File

@@ -4,9 +4,16 @@ export const FIRST_KEY_INDEX = 1;
export function transformArguments(
key: RedisCommandArgument,
milliseconds: number
milliseconds: number,
mode?: 'NX' | 'XX' | 'GT' | 'LT'
): RedisCommandArguments {
return ['PEXPIRE', key, milliseconds.toString()];
const args = ['PEXPIRE', key, milliseconds.toString()];
if (mode) {
args.push(mode);
}
return args;
}
export { transformBooleanReply as transformReply } from './generic-transformers';

View File

@@ -18,6 +18,13 @@ describe('PEXPIREAT', () => {
['PEXPIREAT', 'key', d.getTime().toString()]
);
});
it('with set option', () => {
assert.deepEqual(
transformArguments('key', 1, 'XX'),
['PEXPIREAT', 'key', '1', 'XX']
);
});
});
testUtils.testWithClient('client.pExpireAt', async client => {

View File

@@ -5,13 +5,20 @@ export const FIRST_KEY_INDEX = 1;
export function transformArguments(
key: RedisCommandArgument,
millisecondsTimestamp: number | Date
millisecondsTimestamp: number | Date,
mode?: 'NX' | 'XX' | 'GT' | 'LT'
): RedisCommandArguments {
return [
const args = [
'PEXPIREAT',
key,
transformPXAT(millisecondsTimestamp)
];
if (mode) {
args.push(mode);
}
return args;
}
export { transformBooleanReply as transformReply } from './generic-transformers';

View File

@@ -0,0 +1,21 @@
import { strict as assert } from 'assert';
import testUtils, { GLOBAL } from '../test-utils';
import { transformArguments } from './PEXPIRETIME';
describe('PEXPIRETIME', () => {
testUtils.isVersionGreaterThanHook([7, 0]);
it('transformArguments', () => {
assert.deepEqual(
transformArguments('key'),
['PEXPIRETIME', 'key']
);
});
testUtils.testWithClient('client.pExpireTime', async client => {
assert.equal(
await client.pExpireTime('key'),
-2
);
}, GLOBAL.SERVERS.OPEN);
});

View File

@@ -0,0 +1,9 @@
import { RedisCommandArgument, RedisCommandArguments } from '.';
export const FIRST_KEY_INDEX = 1;
export function transformArguments(key: RedisCommandArgument): RedisCommandArguments {
return ['PEXPIRETIME', key];
}
export declare function transformReply(): number;