From 9ee931b92d6ff83a1ba34805c5d4e875a5c157a8 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Mon, 28 Aug 2023 18:40:33 -0700 Subject: [PATCH] add memory (test) ds --- datastore/databuffer.nim | 2 ++ datastore/memoryds.nim | 30 +++++++++++------------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/datastore/databuffer.nim b/datastore/databuffer.nim index de35b06..7bd18d5 100644 --- a/datastore/databuffer.nim +++ b/datastore/databuffer.nim @@ -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) diff --git a/datastore/memoryds.nim b/datastore/memoryds.nim index 4a4a50c..9db571b 100644 --- a/datastore/memoryds.nim +++ b/datastore/memoryds.nim @@ -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