mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-03 22:23:10 +00:00
add check for whether future is finished before iterating on next
This commit is contained in:
parent
63b59007e5
commit
541f311218
@ -187,10 +187,13 @@ method query*(
|
||||
|
||||
var
|
||||
iter = QueryIter.new()
|
||||
iter.readyForNext = true
|
||||
|
||||
proc next(): Future[?!QueryResponse] {.async.} =
|
||||
iter.readyForNext = false
|
||||
let
|
||||
path = walker()
|
||||
iter.readyForNext = true
|
||||
|
||||
if finished(walker):
|
||||
iter.finished = true
|
||||
|
||||
@ -101,9 +101,12 @@ method query*(
|
||||
walker = keyIterator(self, queryKey)
|
||||
var
|
||||
iter = QueryIter.new()
|
||||
iter.readyForNext = true
|
||||
|
||||
proc next(): Future[?!QueryResponse] {.async.} =
|
||||
iter.readyForNext = false
|
||||
let kb = walker()
|
||||
iter.readyForNext = true
|
||||
|
||||
if finished(walker):
|
||||
iter.finished = true
|
||||
|
||||
@ -151,12 +151,16 @@ method query*(
|
||||
if not (v == SQLITE_OK):
|
||||
return failure newException(DatastoreError, $sqlite3_errstr(v))
|
||||
|
||||
iter.readyForNext = true
|
||||
|
||||
proc next(): Future[?!QueryResponse] {.async.} =
|
||||
if iter.finished:
|
||||
return failure(newException(QueryEndedError, "Calling next on a finished query!"))
|
||||
|
||||
iter.readyForNext = false
|
||||
let
|
||||
v = sqlite3_step(s)
|
||||
iter.readyForNext = true
|
||||
|
||||
case v
|
||||
of SQLITE_ROW:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user