From 10e9cbc005cd9e1834ebb0704028b4694aa42e1c Mon Sep 17 00:00:00 2001 From: leibale Date: Fri, 11 Jun 2021 14:07:55 -0400 Subject: [PATCH] add support for date in both EXPIREAT & EXPIRE --- lib/commands/EXPIREAT.spec.ts | 20 +++++++++++++++----- lib/commands/EXPIREAT.ts | 5 +++-- lib/commands/PEXPIREAT.spec.ts | 20 +++++++++++++++----- lib/commands/PEXPIREAT.ts | 8 ++++++-- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/lib/commands/EXPIREAT.spec.ts b/lib/commands/EXPIREAT.spec.ts index 2d33e5b0af..cefe9fa9b8 100644 --- a/lib/commands/EXPIREAT.spec.ts +++ b/lib/commands/EXPIREAT.spec.ts @@ -3,11 +3,21 @@ import { TestRedisServers, itWithClient } from '../test-utils'; import { transformArguments } from './EXPIREAT'; describe('EXPIREAT', () => { - it('transformArguments', () => { - assert.deepEqual( - transformArguments('key', 1), - ['EXPIRE', 'key', '1'] - ); + describe('transformArguments', () => { + it('number', () => { + assert.deepEqual( + transformArguments('key', 1), + ['EXPIREAT', 'key', '1'] + ); + }); + + it('date', () => { + const d = new Date(); + assert.deepEqual( + transformArguments('key', d), + ['EXPIREAT', 'key', Math.floor(d.getTime() / 1000).toString()] + ); + }); }); itWithClient(TestRedisServers.OPEN, 'client.expireAt', async client => { diff --git a/lib/commands/EXPIREAT.ts b/lib/commands/EXPIREAT.ts index 35f9fad11b..b41f98d382 100644 --- a/lib/commands/EXPIREAT.ts +++ b/lib/commands/EXPIREAT.ts @@ -1,10 +1,11 @@ +import { time } from 'console'; import { transformReplyBoolean } from './generic-transformers'; -export function transformArguments(key: string, timestamp: Date | number): Array { +export function transformArguments(key: string, timestamp: number | Date): Array { return [ 'EXPIREAT', key, - (timestamp instanceof Date ? timestamp.getTime() : timestamp).toString() + (typeof timestamp === 'number' ? timestamp : Math.floor(timestamp.getTime() / 1000)).toString() ]; } diff --git a/lib/commands/PEXPIREAT.spec.ts b/lib/commands/PEXPIREAT.spec.ts index 18e39f9403..6e5fc37ed5 100644 --- a/lib/commands/PEXPIREAT.spec.ts +++ b/lib/commands/PEXPIREAT.spec.ts @@ -3,11 +3,21 @@ import { TestRedisServers, itWithClient } from '../test-utils'; import { transformArguments } from './PEXPIREAT'; describe('PEXPIREAT', () => { - it('transformArguments', () => { - assert.deepEqual( - transformArguments('key', 1), - ['PEXPIREAT', 'key', '1'] - ); + describe('transformArguments', () => { + it('number', () => { + assert.deepEqual( + transformArguments('key', 1), + ['PEXPIREAT', 'key', '1'] + ); + }); + + it('date', () => { + const d = new Date(); + assert.deepEqual( + transformArguments('key', d), + ['PEXPIREAT', 'key', d.getTime().toString()] + ); + }); }); itWithClient(TestRedisServers.OPEN, 'client.pExpireAt', async client => { diff --git a/lib/commands/PEXPIREAT.ts b/lib/commands/PEXPIREAT.ts index 551b2eaa82..70385ba4f2 100644 --- a/lib/commands/PEXPIREAT.ts +++ b/lib/commands/PEXPIREAT.ts @@ -2,8 +2,12 @@ import { transformReplyBoolean } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; -export function transformArguments(key: string, millisecondsTimestamp: number): Array { - return ['PEXPIREAT', key, millisecondsTimestamp.toString()]; +export function transformArguments(key: string, millisecondsTimestamp: number | Date): Array { + return [ + 'PEXPIREAT', + key, + (typeof millisecondsTimestamp === 'number' ? millisecondsTimestamp : millisecondsTimestamp.getTime()).toString() + ]; } export const transformReply = transformReplyBoolean;