From ec4015a404cdeaec56a104e686ce76e8bc59a291 Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Mon, 19 Sep 2022 17:13:11 -0600 Subject: [PATCH] proper query iterator interface --- datastore/query.nim | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/datastore/query.nim b/datastore/query.nim index d89c3f0..68e60a7 100644 --- a/datastore/query.nim +++ b/datastore/query.nim @@ -1,3 +1,6 @@ +import pkg/upraises +import pkg/chronos + import ./key type @@ -13,7 +16,15 @@ type sort*: SortOrder QueryResponse* = tuple[key: Key, data: seq[byte]] - QueryIter* = iterator(): QueryResponse {.closure.} + + GetNext* = proc(): Future[QueryResponse] {.upraises: [], gcsafe, closure.} + QueryIter* = object + finished: bool + next*: GetNext + +iterator items*(q: QueryIter): Future[QueryResponse] = + while not q.finished: + yield q.next() proc init*( T: type Query,