add memory (test) ds

This commit is contained in:
Jaremy Creechley 2023-08-28 18:40:33 -07:00
parent abf43df8aa
commit 3dd21593c7
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 13 additions and 19 deletions

View File

@ -66,3 +66,5 @@ import ./key
proc new*(tp: typedesc[KeyBuffer], key: Key): KeyBuffer =
KeyBuffer.new(key.id())
proc new*(tp: typedesc[ValueBuffer], data: seq[byte]): KeyBuffer =
DataBuffer.new(data)

View File

@ -60,14 +60,15 @@ method get*(
return failure (ref DatastoreError)(msg: "no such key")
method put*(
self: MemoryDatastore,
key: Key,
data: seq[byte]): Future[?!void] {.async.} =
self: MemoryDatastore,
key: Key,
data: seq[byte]
): Future[?!void] {.async.} =
without mounted =? self.dispatch(key), error:
return failure(error)
return (await mounted.store.store.put(mounted.relative, data))
let dk = KeyBuffer.new(key)
let dv = ValueBuffer.new(key)
self.store[dk] = dv
return success()
method put*(
self: MemoryDatastore,
@ -80,18 +81,9 @@ method put*(
return success()
method close*(self: MemoryDatastore): Future[?!void] {.async.} =
for s in self.stores.values:
discard await s.store.close()
# TODO: how to handle failed close?
self.store.clear()
return success()
func new*(
T: type MemoryDatastore,
stores: Table[Key, Datastore] = initTable[Key, Datastore]()): ?!T =
var self = T()
for (k, v) in stores.pairs:
self.stores[?k.path] = MemoryStore(store: v, key: k)
func new*(tp: typedesc[MemoryDatastore]): ?!MemoryDatastore =
var self = default(tp)
success self