From 6224f5aa283b7010e23b5fa03bd5d17ef3fc8a84 Mon Sep 17 00:00:00 2001 From: Ben Date: Wed, 1 May 2024 09:47:29 +0200 Subject: [PATCH] hacks in rocksdb for testing --- rocksdb/rocksdbds.nim | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/rocksdb/rocksdbds.nim b/rocksdb/rocksdbds.nim index cc6ed25d..aedd41f3 100644 --- a/rocksdb/rocksdbds.nim +++ b/rocksdb/rocksdbds.nim @@ -10,17 +10,44 @@ import pkg/upraises import pkg/datastore +import ./rocksdb + push: {.upraises: [].} type RocksDbDatastore* = ref object of Datastore - a: string + db: RocksDbReadWriteRef + +func toByteSeq(str: string): seq[byte] {.inline.} = + @(str.toOpenArrayByte(0, str.high)) + +func toString(bytes: openArray[byte]): string {.inline.} = + let length = bytes.len + if length > 0: + result = newString(length) + copyMem(result.cstring, bytes[0].unsafeAddr, length) method get*(self: RocksDbDatastore, key: Key): Future[?!seq[byte]] {.async, locks: "unknown".} = - raiseAssert("a") + let keyBytes = toByteSeq($key) + + let res = self.db.get(keyBytes) + if res.isErr(): + return failure(res.error()) + return success(res.value()) method put*(self: RocksDbDatastore, key: Key, data: seq[byte]): Future[?!void] {.async, locks: "unknown".} = - raiseAssert("a") + let keyBytes = toByteSeq($key) + let res = self.db.put(keyBytes, data) + if res.isErr(): + return failure("failed to put!") + return success() proc new*(T: type RocksDbDatastore, dbName: string): ?!T = - raiseAssert("a") + let res = openRocksDb(dbName) + if res.isErr(): + return failure(res.error()) + let db = res.value() + + success T( + db: db + )