Skip to content

Commit 491d12e

Browse files
fix: handle deleteMany with empty keys list (#51)
* Handle deleteMany with empty keys list * Create khaki-days-clean.md --------- Co-authored-by: Julien Ripouteau <[email protected]>
1 parent 0715a5b commit 491d12e

File tree

7 files changed

+15
-0
lines changed

7 files changed

+15
-0
lines changed

.changeset/khaki-days-clean.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"bentocache": patch
3+
---
4+
5+
Handle deleteMany with empty keys list

packages/bentocache/src/drivers/database/database.ts

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ export class DatabaseDriver extends BaseDriver implements CacheDriver<true> {
156156
* Delete multiple keys from the cache
157157
*/
158158
async deleteMany(keys: string[]) {
159+
if (keys.length === 0) return true
159160
await this.#initialized
160161

161162
keys = keys.map((key) => this.getItemKey(key))

packages/bentocache/src/drivers/dynamodb.ts

+1
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ export class DynamoDbDriver extends BaseDriver implements CacheDriver {
267267
* Delete multiple keys from the cache
268268
*/
269269
async deleteMany(keys: string[]) {
270+
if (keys.length === 0) return true
270271
await Promise.all(keys.map((key) => this.delete(key)))
271272
return true
272273
}

packages/bentocache/src/drivers/file/file.ts

+1
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ export class FileDriver extends BaseDriver implements CacheDriver {
225225
* Delete multiple keys from the cache
226226
*/
227227
async deleteMany(keys: string[]) {
228+
if (keys.length === 0) return true
228229
await Promise.all(keys.map((key) => this.delete(key)))
229230
return true
230231
}

packages/bentocache/src/drivers/memory.ts

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export class MemoryDriver extends BaseDriver implements L1CacheDriver {
131131
* Delete multiple keys from the cache
132132
*/
133133
deleteMany(keys: string[]) {
134+
if (keys.length === 0) return true
134135
for (const key of keys) this.delete(key)
135136
return true
136137
}

packages/bentocache/src/drivers/redis.ts

+1
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export class RedisDriver extends BaseDriver implements L2CacheDriver {
138138
* Delete multiple keys from the cache
139139
*/
140140
async deleteMany(keys: string[]) {
141+
if (keys.length === 0) return true
141142
await this.#connection.del(keys.map((key) => this.getItemKey(key)))
142143
return true
143144
}

packages/bentocache/tests/helpers/driver_test_suite.ts

+5
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ export function registerCacheDriverTestSuite(options: {
103103
assert.deepEqual(await cache.get('key2'), undefined)
104104
})
105105

106+
test('deleteMany() return true when no keys are provided', async ({ assert }) => {
107+
const result = await cache.deleteMany([])
108+
assert.isFalse(result)
109+
})
110+
106111
test('delete() returns true when key is removed', async ({ assert }) => {
107112
await cache.set('key1', 'value1')
108113
const result = await cache.delete('key1')

0 commit comments

Comments
 (0)