From 1594977abf460e4089b82e6b228bd8ffa567432e Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Tue, 29 Aug 2023 17:00:11 -0700 Subject: [PATCH] implementing query type --- datastore/databuffer.nim | 1 + datastore/threadbackend.nim | 6 ++++++ datastore/threadproxyds.nim | 7 +++++++ tests/datastore/testthreadproxyds.nim | 6 +----- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/datastore/databuffer.nim b/datastore/databuffer.nim index e3fa207..b6ff125 100644 --- a/datastore/databuffer.nim +++ b/datastore/databuffer.nim @@ -64,6 +64,7 @@ proc toSeq*[T: byte | char](a: DataBuffer, tp: typedesc[T]): seq[T] = proc toString*(data: DataBuffer): string = ## convert buffer to string type using copy + if data.isNil: return "" result = newString(data.len()) if data.len() > 0: copyMem(addr result[0], unsafeAddr data[].buf[0], data.len) diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index f4d06d8..d36acf6 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -172,6 +172,8 @@ proc deleteTask*( discard ret[].signal.fireSync() +import pretty + proc delete*( ret: TResult[void], tds: ThreadDatastorePtr, @@ -191,7 +193,11 @@ proc queryTask*( ret.failure(err) let qrb = res.toBuffer() + print "queryTask: ", " res: ", res + ret.success(qrb) + print "queryTask: ", " qrb:key: ", ret[].results.get().key.toString() + print "queryTask: ", " qrb:data: ", ret[].results.get().data.toString() except Exception as exc: ret.failure(exc) diff --git a/datastore/threadproxyds.nim b/datastore/threadproxyds.nim index fc9a162..da48275 100644 --- a/datastore/threadproxyds.nim +++ b/datastore/threadproxyds.nim @@ -120,6 +120,8 @@ method put*( return success() +import pretty + method query*( self: ThreadProxyDatastore, query: Query @@ -138,9 +140,14 @@ method query*( ## note that bypasses SharedPtr isolation - may need `protect` here? iter[].it = it + echo "\n\n=== Query Start === " while not iter[].it.finished: + echo "" query(ret, self.tds, iter) await wait(ret[].signal) + print "query:post: ", ret[].results + print "query:post: ", " qrb:key: ", ret[].results.get().key.toString() + print "query:post: ", " qrb:data: ", ret[].results.get().data.toString() iter[].it = nil # ensure our sharedptr doesn't try and dealloc finally: diff --git a/tests/datastore/testthreadproxyds.nim b/tests/datastore/testthreadproxyds.nim index 472f62e..30b91fc 100644 --- a/tests/datastore/testthreadproxyds.nim +++ b/tests/datastore/testthreadproxyds.nim @@ -69,11 +69,6 @@ suite "Test Basic ThreadProxyDatastore": basicStoreTests(ds, key, bytes, otherBytes) suite "Test Query": - let - path = currentSourcePath() # get this file's name - basePath = "tests_data" - basePathAbs = path.parentDir / basePath - var mem: MemoryDatastore sds: ThreadProxyDatastore @@ -83,3 +78,4 @@ suite "Test Query": sds = newThreadProxyDatastore(mem).expect("should work") queryTests(sds, false) +