Skip to content

Commit 809fec2

Browse files
committed
Add promise support to del, reset, and ttl
1 parent dd7f916 commit 809fec2

File tree

4 files changed

+76
-15
lines changed

4 files changed

+76
-15
lines changed

dist/index.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,30 @@ var redisStore = function redisStore() {
5353
});
5454
},
5555
del: function del(key, options, cb) {
56-
if (typeof options === 'function') {
57-
cb = options;
58-
}
56+
return new Promise(function (resolve, reject) {
57+
if (typeof options === 'function') {
58+
cb = options;
59+
}
60+
61+
if (!cb) {
62+
cb = function cb(err, result) {
63+
return err ? reject(err) : resolve(result);
64+
};
65+
}
5966

60-
redisCache.del(key, handleResponse(cb));
67+
redisCache.del(key, handleResponse(cb));
68+
});
6169
},
6270
reset: function reset(cb) {
63-
return redisCache.flushdb(handleResponse(cb));
71+
return new Promise(function (resolve, reject) {
72+
if (!cb) {
73+
cb = function cb(err, result) {
74+
return err ? reject(err) : resolve(result);
75+
};
76+
}
77+
78+
redisCache.flushdb(handleResponse(cb));
79+
});
6480
},
6581
keys: function keys(pattern, cb) {
6682
return new Promise(function (resolve, reject) {
@@ -79,7 +95,15 @@ var redisStore = function redisStore() {
7995
});
8096
},
8197
ttl: function ttl(key, cb) {
82-
return redisCache.ttl(key, handleResponse(cb));
98+
return new Promise(function (resolve, reject) {
99+
if (!cb) {
100+
cb = function cb(err, result) {
101+
return err ? reject(err) : resolve(result);
102+
};
103+
}
104+
105+
redisCache.ttl(key, handleResponse(cb));
106+
});
83107
},
84108
isCacheableValue: storeArgs.is_cacheable_value || function (value) {
85109
return value !== undefined && value !== null;

index.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,28 @@ const redisStore = (...args) => {
4242
redisCache.get(key, handleResponse(cb, { parse: true }));
4343
})
4444
),
45-
del: (key, options, cb) => {
46-
if (typeof options === 'function') {
47-
cb = options;
48-
}
45+
del: (key, options, cb) => (
46+
new Promise((resolve, reject) => {
47+
if (typeof options === 'function') {
48+
cb = options;
49+
}
4950

50-
redisCache.del(key, handleResponse(cb));
51-
},
52-
reset: cb => redisCache.flushdb(handleResponse(cb)),
51+
if (!cb) {
52+
cb = (err, result) => (err ? reject(err) : resolve(result));
53+
}
54+
55+
redisCache.del(key, handleResponse(cb));
56+
})
57+
),
58+
reset: cb => (
59+
new Promise((resolve, reject) => {
60+
if (!cb) {
61+
cb = (err, result) => (err ? reject(err) : resolve(result));
62+
}
63+
64+
redisCache.flushdb(handleResponse(cb));
65+
})
66+
),
5367
keys: (pattern, cb) => (
5468
new Promise((resolve, reject) => {
5569
if (typeof pattern === 'function') {
@@ -64,7 +78,15 @@ const redisStore = (...args) => {
6478
redisCache.keys(pattern, handleResponse(cb));
6579
})
6680
),
67-
ttl: (key, cb) => redisCache.ttl(key, handleResponse(cb)),
81+
ttl: (key, cb) => (
82+
new Promise((resolve, reject) => {
83+
if (!cb) {
84+
cb = (err, result) => (err ? reject(err) : resolve(result));
85+
}
86+
87+
redisCache.ttl(key, handleResponse(cb));
88+
})
89+
),
6890
isCacheableValue: storeArgs.is_cacheable_value || (value => value !== undefined && value !== null),
6991
};
7092
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "cache-manager-redis-store",
33
"author": "Matthijs Dabroek <[email protected]>",
44
"description": "Redis store for node-cache-manager",
5-
"version": "1.2.0",
5+
"version": "1.3.0",
66
"license": "MIT",
77
"main": "dist/index.js",
88
"repository": {

test/index.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,11 @@ describe('get', () => {
243243
});
244244

245245
describe('del', () => {
246+
it('should return a promise', (done) => {
247+
expect(redisCache.del('foo')).toBeInstanceOf(Promise);
248+
done();
249+
});
250+
246251
it('should delete a value for a given key', (done) => {
247252
redisCache.set('foo', 'bar', () => {
248253
redisCache.del('foo', (err) => {
@@ -269,6 +274,11 @@ describe('del', () => {
269274
});
270275

271276
describe('reset', () => {
277+
it('should return a promise', (done) => {
278+
expect(redisCache.reset()).toBeInstanceOf(Promise);
279+
done();
280+
});
281+
272282
it('should flush underlying db', (done) => {
273283
redisCache.reset((err) => {
274284
expect(err).toEqual(null);
@@ -291,6 +301,11 @@ describe('reset', () => {
291301
});
292302

293303
describe('ttl', () => {
304+
it('should return a promise', (done) => {
305+
expect(redisCache.ttl('foo')).toBeInstanceOf(Promise);
306+
done();
307+
});
308+
294309
it('should retrieve ttl for a given key', (done) => {
295310
redisCache.set('foo', 'bar', () => {
296311
redisCache.ttl('foo', (err, ttl) => {

0 commit comments

Comments
 (0)