Skip to content

Commit c4d275a

Browse files
committed
Fix convert_params_object()
It was just completely busted.
1 parent 519df6d commit c4d275a

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

integration-tests/tests/sync.test.js

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ test.serial("Statement.get() [named]", async (t) => {
6969

7070
var stmt = undefined;
7171

72+
stmt = db.prepare("SELECT :b, :a");
73+
t.deepEqual(stmt.raw().get({ a: 'a', b: 'b' }), ['b', 'a']);
74+
7275
stmt = db.prepare("SELECT * FROM users WHERE id = :id");
7376
t.is(stmt.get({ id: 0 }), undefined);
7477
t.is(stmt.get({ id: 1 }).name, "Alice");

src/lib.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -460,13 +460,11 @@ fn convert_params_object(
460460
v: Handle<'_, JsObject>,
461461
) -> NeonResult<libsql::Params> {
462462
let mut params = vec![];
463-
let keys = v.get_own_property_names(cx)?;
464-
for i in 0..keys.len(cx) {
465-
let key: Handle<'_, JsValue> = keys.get(cx, i)?;
466-
let key = key.downcast_or_throw::<JsString, _>(cx)?;
467-
let v = v.get(cx, key)?;
463+
for idx in 0..stmt.stmt.parameter_count() {
464+
let name = stmt.stmt.parameter_name((idx + 1) as i32).unwrap();
465+
let name = name.to_string();
466+
let v = v.get(cx, &name[1..])?;
468467
let v = js_value_to_value(cx, v)?;
469-
let name = stmt.stmt.parameter_name((i + 1) as i32).unwrap().to_string();
470468
params.push((name, v));
471469
}
472470
Ok(libsql::Params::Named(params))

0 commit comments

Comments
 (0)