add querybuffer type

This commit is contained in:
Jaremy Creechley 2023-08-29 15:20:57 -07:00
parent b05ceb9d6e
commit da98e66389
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300
2 changed files with 19 additions and 6 deletions

View File

@ -91,6 +91,19 @@ proc toBuffer*(q: Query): QueryBuffer =
of SortOrder.Descending: QSortOrder.Descending 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 = proc toBuffer*(q: QueryResponse): QueryResponseBuffer =
## convert QueryReponses to thread safe type ## convert QueryReponses to thread safe type
var kb: KeyBuffer var kb: KeyBuffer

View File

@ -187,11 +187,12 @@ proc delete*(
# yield key # yield key
method queryTask*( method queryTask*(
ret: TResult[void], ret: TResult[QueryResponseBuffer],
tds: ThreadDatastorePtr, tds: ThreadDatastorePtr,
query: Query, qb: QueryBuffer,
): Future[?!QueryIter] {.async.} = ) =
let query = qb.toQuery()
without key =? kb.toKey(), err: without key =? kb.toKey(), err:
ret.failure(err) ret.failure(err)
@ -201,7 +202,6 @@ method queryTask*(
if err =? (await self.put(entry.key, entry.data)).errorOption: if err =? (await self.put(entry.key, entry.data)).errorOption:
return failure err return failure err
iter.next = next iter.next = next
return success iter return success iter
@ -210,5 +210,5 @@ proc query*(
tds: ThreadDatastorePtr, tds: ThreadDatastorePtr,
query: Query, query: Query,
) = ) =
let bkey = StringBuffer.new(key.id()) let bq = query.toBuffer()
tds[].tp.spawn deleteTask(ret, tds, bkey) tds[].tp.spawn queryTask(ret, tds, bq)