mirror of
https://github.com/logos-storage/nim-datastore.git
synced 2026-01-05 23:23:10 +00:00
add querybuffer type
This commit is contained in:
parent
b05ceb9d6e
commit
da98e66389
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user