Get kuzu blob -> nim seq working.
FossilOrigin-Name: 93f0981fe0a2dbbcd455ebf69b5042e70503f215bb78c8730e12d57d3e884db0
This commit is contained in:
parent
cf00df149d
commit
7a85bfc7ac
2 changed files with 16 additions and 12 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
const KUZU_VERSION* = "0.2.0"
|
||||
const KUZU_EXPECTED_LIBVERSION* = "0.9.0"
|
||||
const BLOB_MAXSIZE = 4096
|
||||
|
||||
let KUZU_DEFAULT_CONFIG* = kuzu_default_system_config()
|
||||
|
||||
|
|
|
|||
|
|
@ -186,17 +186,20 @@ func `$`*( struct: KuzuStructValue ): string =
|
|||
result = $kuzu_value_to_string( addr struct.value.handle )
|
||||
|
||||
|
||||
# func toBlob*( value: KuzuValue ): array[ 4096, byte ] =
|
||||
# ## Conversion from Kuzu type to Nim.
|
||||
# if value.kind != KUZU_BLOB:
|
||||
# raise newException( KuzuTypeError, &"Mismatched types: {value.kind} != blob" )
|
||||
# var rv: array[ 4096, byte ]
|
||||
# assert( kuzu_value_get_blob( addr value.handle, addr rv[0] ) == KuzuSuccess )
|
||||
# return rv
|
||||
proc toBlob*( value: KuzuValue ): seq[ byte ] =
|
||||
## Conversion from Kuzu type to Nim - returns a BLOB as a sequence of bytes.
|
||||
if value.kind != KUZU_BLOB:
|
||||
raise newException( KuzuTypeError, &"Mismatched types: {value.kind} != blob" )
|
||||
|
||||
result = @[]
|
||||
var data: ptr byte
|
||||
assert( kuzu_value_get_blob( addr value.handle, addr data ) == KuzuSuccess )
|
||||
|
||||
for idx in 0 .. BLOB_MAXSIZE:
|
||||
var byte = cast[ptr byte](cast[uint](data) + idx.uint)[]
|
||||
if byte == 0: break
|
||||
result.add( byte )
|
||||
|
||||
kuzu_destroy_blob( data )
|
||||
|
||||
|
||||
#[
|
||||
BLOB
|
||||
MAP
|
||||
]#
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue