From da98e663896c3d3e12b278119c299dc2c271f245 Mon Sep 17 00:00:00 2001 From: Jaremy Creechley Date: Tue, 29 Aug 2023 15:20:57 -0700 Subject: [PATCH] add querybuffer type --- datastore/query.nim | 13 +++++++++++++ datastore/threadbackend.nim | 12 ++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/datastore/query.nim b/datastore/query.nim index c86bacb..741aedd 100644 --- a/datastore/query.nim +++ b/datastore/query.nim @@ -91,6 +91,19 @@ proc toBuffer*(q: Query): QueryBuffer = of SortOrder.Descending: QSortOrder.Descending ) +proc toQuery*(qb: QueryBuffer): Query = + ## convert QueryBuffer to regular Query + Query( + key: qb.key.toKey().expect("key expected"), + value: qb.value, + limit: qb.limit, + offset: qb.offset, + sort: + case qb.sort: + of QSortOrder.Ascending: SortOrder.Assending + of QSortOrder.Descending: SortOrder.Descending + ) + proc toBuffer*(q: QueryResponse): QueryResponseBuffer = ## convert QueryReponses to thread safe type var kb: KeyBuffer diff --git a/datastore/threadbackend.nim b/datastore/threadbackend.nim index c067f1a..905be10 100644 --- a/datastore/threadbackend.nim +++ b/datastore/threadbackend.nim @@ -187,11 +187,12 @@ proc delete*( # yield key method queryTask*( - ret: TResult[void], + ret: TResult[QueryResponseBuffer], tds: ThreadDatastorePtr, - query: Query, -): Future[?!QueryIter] {.async.} = + qb: QueryBuffer, +) = + let query = qb.toQuery() without key =? kb.toKey(), err: ret.failure(err) @@ -201,7 +202,6 @@ method queryTask*( if err =? (await self.put(entry.key, entry.data)).errorOption: return failure err - iter.next = next return success iter @@ -210,5 +210,5 @@ proc query*( tds: ThreadDatastorePtr, query: Query, ) = - let bkey = StringBuffer.new(key.id()) - tds[].tp.spawn deleteTask(ret, tds, bkey) + let bq = query.toBuffer() + tds[].tp.spawn queryTask(ret, tds, bq)