use crate::error::DbError;
use crate::scripting::string_utils::*;
use mlua::Lua;
pub fn setup_table_lib_extensions(lua: &Lua) -> Result<(), DbError> {
let globals = lua.globals();
let table_lib: mlua::Table = globals
.get("table")
.map_err(|e| DbError::InternalError(format!("Failed to get table library: {}", e)))?;
let deep_merge_fn = create_deep_merge_function(lua).map_err(|e| {
DbError::InternalError(format!("Failed to create deep_merge function: {}", e))
})?;
table_lib
.set("deep_merge", deep_merge_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.deep_merge: {}", e)))?;
let keys_fn = create_keys_function(lua)
.map_err(|e| DbError::InternalError(format!("Failed to create keys function: {}", e)))?;
table_lib
.set("keys", keys_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.keys: {}", e)))?;
let values_fn = create_values_function(lua)
.map_err(|e| DbError::InternalError(format!("Failed to create values function: {}", e)))?;
table_lib
.set("values", values_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.values: {}", e)))?;
let contains_fn = create_contains_function(lua).map_err(|e| {
DbError::InternalError(format!("Failed to create contains function: {}", e))
})?;
table_lib
.set("contains", contains_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.contains: {}", e)))?;
let filter_fn = create_filter_function(lua)
.map_err(|e| DbError::InternalError(format!("Failed to create filter function: {}", e)))?;
table_lib
.set("filter", filter_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.filter: {}", e)))?;
let map_fn = create_map_function(lua)
.map_err(|e| DbError::InternalError(format!("Failed to create map function: {}", e)))?;
table_lib
.set("map", map_fn)
.map_err(|e| DbError::InternalError(format!("Failed to set table.map: {}", e)))?;
Ok(())
}