Skip to content

Commit 1a886fe

Browse files
committed
feat : add clear() to delete all key value pairs
1 parent 5ea8610 commit 1a886fe

File tree

4 files changed

+78
-6
lines changed

4 files changed

+78
-6
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ void async function main() {
7777
console.log(await db.list())
7878
console.log(await db.delete('key'))
7979
console.log(await db.has('key'))
80+
console.log(await db.clear())
8081
}()
8182
```
8283

@@ -95,6 +96,7 @@ void async function main() {
9596
console.log(await db.list())
9697
console.log(await db.delete('key'))
9798
console.log(await db.has('key'))
99+
console.log(await db.clear())
98100
}()
99101
```
100102
```javascript
@@ -113,6 +115,7 @@ void async function main() {
113115
console.log(await db.list())
114116
console.log(await db.delete('key'))
115117
console.log(await db.has('key'))
118+
console.log(await db.clear())
116119
}()
117120
</script>
118121
```
@@ -133,6 +136,7 @@ void async function main() {
133136
console.log(await db.list())
134137
console.log(await db.delete('key'))
135138
console.log(await db.has('key'))
139+
console.log(await db.clear())
136140
}()
137141
</script>
138142
```
@@ -151,6 +155,7 @@ void async function main() {
151155
console.log(await db.list())
152156
console.log(await db.delete('key'))
153157
console.log(await db.has('key'))
158+
console.log(await db.clear())
154159
}()
155160
```
156161

@@ -173,6 +178,7 @@ export default {
173178
data.push(await db.has('key'))
174179
data.push(await db.list())
175180
data.push(await db.delete('key'))
181+
data.push(await db.clear())
176182
return new Response(JSON.stringify(data, null, 2))
177183
}
178184
}
@@ -240,9 +246,16 @@ To delete a key-value pair, call the delete() method, resolve to `true` or `fals
240246
```javascript
241247
await has(key)
242248
```
243-
244249
To check for the existence of a key, resolve to `true` or `false`
245250

251+
### Clear storage
252+
253+
```javascript
254+
await clear()
255+
```
256+
To delete all key value pairs, resolve to `true` or `false`
257+
258+
246259
## License
247260

248261
[MIT](https://github.com/nuzulul/kv-storage/blob/main/LICENSE)

src/kv-storage-module.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ export class KVStorageModule{
8787
const keyFilePath = this._storageDir+'/'+key
8888

8989
fs.unlink(keyFilePath,(err)=>{
90-
if (err) {
91-
fs.stat(keyFilePath, (err)=>{
92-
if (err) {resolve(true)}else{resolve(false)}
93-
});
94-
}else{resolve(true)}
90+
if (err) {
91+
fs.stat(keyFilePath, (err)=>{
92+
if (err) {resolve(true)}else{resolve(false)}
93+
});
94+
}else{resolve(true)}
9595
});
9696

9797
})
@@ -122,4 +122,24 @@ export class KVStorageModule{
122122
});
123123
})
124124
}
125+
126+
public async clear(){
127+
return new Promise((resolve) => {
128+
fs.readdir(this._storageDir,(err,files)=>{
129+
if (err) {resolve(false)}else{
130+
131+
let success = true
132+
for (const file of files){
133+
const keyFilePath = this._storageDir+'/'+file
134+
fs.unlink(keyFilePath,(err)=>{
135+
if (err) success = false
136+
});
137+
}
138+
resolve(success)
139+
140+
}
141+
});
142+
})
143+
}
144+
125145
}

src/kv-storage.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,15 @@ class KVStorageCloudflare{
232232
}
233233
return output
234234
}
235+
236+
public async clear(){
237+
238+
const stmt = this._databaseBinding.prepare('DELETE FROM '+this._storageName);
239+
const values = await stmt.run();
240+
return values.success
241+
242+
}
243+
235244
}
236245

237246
class KVStorageBrowser{
@@ -400,4 +409,19 @@ class KVStorageBrowser{
400409
}
401410
})
402411
}
412+
413+
public async clear(){
414+
return new Promise((resolve) => {
415+
let transaction = this._iDB.transaction(this._storageName, "readwrite")
416+
let request = transaction.objectStore(this._storageName).clear()
417+
request.onsuccess = function(event) {
418+
resolve(true)
419+
}
420+
request.onerror = function() {
421+
resolve(false)
422+
}
423+
424+
})
425+
}
426+
403427
}

test/test-unit.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,21 @@ export async function test(db:any){
4141
obj={delete:await db.delete('yesyes'),expected: true}
4242
if(obj.delete == obj.expected){obj.passed = true}else{obj.passed = false}
4343
data.push(obj)
44+
45+
//test for create new kv
46+
obj={put:await db.put('yesyesyes','no'),expected: true}
47+
if(obj.put == obj.expected){obj.passed = true}else{obj.passed = false}
48+
data.push(obj)
49+
50+
//test for clear all kv
51+
obj={clear:await db.clear(),expected: true}
52+
if(obj.clear == obj.expected){obj.passed = true}else{obj.passed = false}
53+
data.push(obj)
54+
55+
//test list empty storage
56+
obj={list:await db.list(),expected:{keys:[],complete:true}}
57+
if(JSON.stringify(obj.list) == JSON.stringify(obj.expected)){obj.passed = true}else{obj.passed = false}
58+
data.push(obj)
4459

4560
return JSON.stringify(data, null, 2)
4661
}

0 commit comments

Comments
 (0)