mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-08 08:33:10 +00:00
change to non-closure iterator
This commit is contained in:
parent
598f63c651
commit
7bb11c0e0b
@ -32,6 +32,7 @@ type
|
||||
DbQueryHandle*[T] = object
|
||||
query*: DbQuery
|
||||
cancel*: bool
|
||||
closed*: bool
|
||||
env*: T
|
||||
|
||||
DbQueryResponse* = tuple[key: Option[KeyId], data: DataBuffer]
|
||||
|
||||
@ -163,12 +163,13 @@ proc query*(
|
||||
|
||||
success DbQueryHandle[RawStmtPtr](query: query, env: s)
|
||||
|
||||
proc close*(handle: DbQueryHandle[RawStmtPtr]) =
|
||||
proc close*(handle: var DbQueryHandle[RawStmtPtr]) =
|
||||
if not handle.closed:
|
||||
handle.closed = true
|
||||
echo "sqlite backend: query: finally close"
|
||||
discard sqlite3_reset(handle.env)
|
||||
discard sqlite3_clear_bindings(handle.env)
|
||||
handle.env.dispose()
|
||||
return
|
||||
|
||||
iterator iter*(handle: var DbQueryHandle[RawStmtPtr]): ?!DbQueryResponse =
|
||||
while not handle.cancel:
|
||||
@ -211,15 +212,16 @@ iterator iter*(handle: var DbQueryHandle[RawStmtPtr]): ?!DbQueryResponse =
|
||||
echo "SQLITE ROW: yield"
|
||||
yield success (key.some, data)
|
||||
of SQLITE_DONE:
|
||||
echo "SQLITE DONE: return"
|
||||
echo "SQLITE DONE: yield"
|
||||
handle.close()
|
||||
break
|
||||
else:
|
||||
echo "SQLITE ERROR: return"
|
||||
echo "SQLITE ERROR: yield"
|
||||
handle.cancel = true
|
||||
yield DbQueryResponse.failure newException(DatastoreError, $sqlite3_errstr(v))
|
||||
break
|
||||
|
||||
handle.close()
|
||||
|
||||
|
||||
|
||||
proc contains*(self: SQLiteBackend, key: DbKey): bool =
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user