From 0b89c5de5caea8dc29691f5eb5ed9f8cd37c7f8d Mon Sep 17 00:00:00 2001 From: Trezy Date: Thu, 26 Feb 2026 22:42:18 -0600 Subject: [PATCH] fix: force records from `db` to serialize to arrays --- src/lua/db_api.rs | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/lua/db_api.rs b/src/lua/db_api.rs index 87b7493..923127c 100644 --- a/src/lua/db_api.rs +++ b/src/lua/db_api.rs @@ -52,13 +52,21 @@ pub fn register_db_api(lua: &Lua, state: Arc) -> LuaResult<()> { }) .collect(); - let mut result = json!({ "records": records }); + let record_values: Vec = records + .iter() + .map(|r| lua.to_value(r)) + .collect::>()?; + let records_table = lua.create_sequence_from(record_values)?; + records_table.set_metatable(Some(lua.array_metatable()))?; + + let result_table = lua.create_table()?; + result_table.set("records", records_table)?; if has_next { let next_cursor = (offset + limit).to_string(); - result.as_object_mut().unwrap().insert("cursor".to_string(), json!(next_cursor)); + result_table.set("cursor", next_cursor)?; } - lua.to_value(&result) + Ok(mlua::Value::Table(result_table)) } })?; db_table.set("query", query_fn)?; @@ -128,8 +136,17 @@ pub fn register_db_api(lua: &Lua, state: Arc) -> LuaResult<()> { }) .collect(); - let result = json!({ "records": records }); - lua.to_value(&result) + let record_values: Vec = records + .iter() + .map(|r| lua.to_value(r)) + .collect::>()?; + let records_table = lua.create_sequence_from(record_values)?; + records_table.set_metatable(Some(lua.array_metatable()))?; + + let result_table = lua.create_table()?; + result_table.set("records", records_table)?; + + Ok(mlua::Value::Table(result_table)) } })?; db_table.set("search", search_fn)?; -- 2.51.2