add check for whether future is finished before iterating on next

This commit is contained in:
Jaremy Creechley 2023-09-06 16:03:14 -07:00
parent 63b59007e5
commit 541f311218
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
3 changed files with 10 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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: