add support for batch deletes

This commit is contained in:
munna0908 2025-03-27 21:28:53 +05:30
parent 39000fd4fc
commit 237f2d2b8a
No known key found for this signature in database
GPG Key ID: 2FFCD637E937D3E6
3 changed files with 16 additions and 0 deletions

View File

@ -25,6 +25,9 @@ method delete*(self: Datastore, key: Key): Future[?!void] {.base, gcsafe, locks:
method delete*(self: Datastore, keys: seq[Key]): Future[?!void] {.base, gcsafe, locks: "unknown".} =
raiseAssert("Not implemented!")
method batchDelete*(self: Datastore, keys: seq[Key]): Future[?!void] {.base, gcsafe, locks: "unknown".} =
raiseAssert("Not implemented!")
method get*(self: Datastore, key: Key): Future[?!seq[byte]] {.base, gcsafe, locks: "unknown".} =
raiseAssert("Not implemented!")

View File

@ -40,6 +40,16 @@ method delete*(self: LevelDbDatastore, keys: seq[Key]): Future[?!void] {.async.}
return failure(err.msg)
return success()
method batchDelete*(self: LevelDbDatastore, keys: seq[Key]): Future[?!void] {.async.} =
try:
let b = newBatch()
for key in keys:
b.delete($key)
self.db.write(b)
return success()
except LevelDbException as e:
return failure("LevelDbDatastore.batchDelete exception: " & e.msg)
method get*(self: LevelDbDatastore, key: Key): Future[?!seq[byte]] {.async.} =
try:
let str = self.db.get($key)

View File

@ -83,6 +83,9 @@ proc delete*(self: TypedDatastore, key: Key): Future[?!void] {.async.} =
proc delete*(self: TypedDatastore, keys: seq[Key]): Future[?!void] {.async.} =
await self.ds.delete(keys)
proc batchDelete*(self: TypedDatastore, keys: seq[Key]): Future[?!void] {.async.} =
await self.ds.batchDelete(keys)
proc close*(self: TypedDatastore): Future[?!void] {.async.} =
await self.ds.close()