mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-02 13:43:11 +00:00
adding serialization to query iter
This commit is contained in:
parent
71c704f0f5
commit
600dca6148
@ -188,10 +188,23 @@ method query*(
|
||||
var
|
||||
iter = QueryIter.new()
|
||||
|
||||
let lock = newAsyncLock()
|
||||
proc next(): Future[?!QueryResponse] {.async.} =
|
||||
defer:
|
||||
if lock.locked:
|
||||
lock.release()
|
||||
|
||||
if lock.locked:
|
||||
return failure (ref DatastoreError)(msg: "Should always await query features")
|
||||
|
||||
let
|
||||
path = walker()
|
||||
|
||||
if iter.finished:
|
||||
return failure "iterator is finished"
|
||||
|
||||
await lock.acquire()
|
||||
|
||||
if finished(walker):
|
||||
iter.finished = true
|
||||
return success (Key.none, EmptyBytes)
|
||||
|
||||
@ -151,9 +151,19 @@ method query*(
|
||||
if not (v == SQLITE_OK):
|
||||
return failure newException(DatastoreError, $sqlite3_errstr(v))
|
||||
|
||||
let lock = newAsyncLock()
|
||||
proc next(): Future[?!QueryResponse] {.async.} =
|
||||
defer:
|
||||
if lock.locked:
|
||||
lock.release()
|
||||
|
||||
if lock.locked:
|
||||
return failure (ref DatastoreError)(msg: "Should always await query features")
|
||||
|
||||
if iter.finished:
|
||||
return failure(newException(QueryEndedError, "Calling next on a finished query!"))
|
||||
return failure((ref QueryEndedError)(msg: "Calling next on a finished query!"))
|
||||
|
||||
await lock.acquire()
|
||||
|
||||
let
|
||||
v = sqlite3_step(s)
|
||||
|
||||
@ -287,6 +287,9 @@ method query*(
|
||||
if lock.locked:
|
||||
lock.release()
|
||||
|
||||
if lock.locked:
|
||||
return failure (ref DatastoreError)(msg: "Should always await query features")
|
||||
|
||||
if iter.finished == true:
|
||||
return failure (ref QueryEndedError)(msg: "Calling next on a finished query!")
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user