bindings/wasm: Fix conversion to JsValue

This commit is contained in:
Pekka Enberg
2024-11-20 11:54:07 +02:00
parent b65d0a72ba
commit bfce49c7eb

View File

@@ -71,7 +71,8 @@ impl Statement {
Ok(limbo_core::RowResult::Row(row)) => {
let row_array = js_sys::Array::new();
for value in row.values {
row_array.push(&JsValue::from_str(&value.to_string()));
let value = to_js_value(value);
row_array.push(&value);
}
array.push(&row_array);
}
@@ -84,6 +85,22 @@ impl Statement {
}
}
fn to_js_value(value: limbo_core::Value) -> JsValue {
match value {
limbo_core::Value::Null => JsValue::null(),
limbo_core::Value::Integer(i) => {
if i >= i32::MIN as i64 && i <= i32::MAX as i64 {
JsValue::from(i as i32)
} else {
JsValue::from(i)
}
}
limbo_core::Value::Float(f) => JsValue::from(f),
limbo_core::Value::Text(t) => JsValue::from_str(t),
limbo_core::Value::Blob(b) => js_sys::Uint8Array::from(b.as_slice()).into(),
}
}
pub struct File {
vfs: VFS,
fd: i32,