nim-datastore/datastore/backend.nim

34 lines
861 B
Nim
Raw Normal View History

2023-09-20 17:49:57 -07:00
import pkg/questionable/results
import pkg/upraises
import ./threads/databuffer
import ./threads/threadresult
import ./threads/semaphore
2023-09-20 20:14:08 -07:00
import ./key
2023-09-20 17:49:57 -07:00
import ./types
export databuffer, threadresult, semaphore, types
export upraises, results
2023-09-20 20:14:08 -07:00
type
KeyId* = object
## serialized Key ID, equivalent to `key.id()`
data: DataBuffer
DbKey* = string | KeyId
DbVal* = seq[byte] | DataBuffer
proc `$`*(id: KeyId): string = $(id.data)
proc toDb*(key: Key): DbKey {.inline, raises: [].} =
let id: string = key.id()
let db = DataBuffer.new(id.len()+1) # include room for null for cstring compat
db.setData(id)
DbKey(data: db)
proc toKey*(key: DbKey): Key {.inline, raises: [].} =
Key.init(key.data).expect("expected valid key here for but got `" & $key.data & "`")
template toOpenArray*(x: DbKey): openArray[char] =
x.data.toOpenArray(char)