use heromodels::db::hero::OurDB; use heromodels::models::legal::register_legal_rhai_module; use rhai::Engine; use std::sync::Arc; use std::{fs, path::Path}; fn main() -> Result<(), Box> { // Initialize Rhai engine let mut engine = Engine::new(); // Initialize database with OurDB // Using a temporary/in-memory database for the example (creates files in current dir) let db_name = "temp_legal_rhai_db"; let db = Arc::new(OurDB::new(db_name, true).expect("Failed to create database")); // Register legal Rhai module functions register_legal_rhai_module(&mut engine, db.clone()); // Load and evaluate the Rhai script let script_path_str = "examples/legal_rhai/legal.rhai"; let script_path = Path::new(script_path_str); if !script_path.exists() { eprintln!("Error: Rhai script not found at {}", script_path_str); eprintln!( "Please ensure the script 'legal.rhai' exists in the 'examples/legal_rhai/' directory." ); return Err(Box::new(std::io::Error::new( std::io::ErrorKind::NotFound, format!("Rhai script not found: {}", script_path_str), ))); } println!("Executing Rhai script: {}", script_path_str); let script = fs::read_to_string(script_path)?; match engine.eval::<()>(&script) { Ok(_) => println!("\nRhai script executed successfully!"), Err(e) => { eprintln!("\nRhai script execution failed: {}\nDetails: {:#?}", e, e); // No explicit cleanup in this example, similar to flow_rhai_example return Err(e.into()); // Propagate the Rhai error } } // No explicit cleanup in this example, similar to flow_rhai_example Ok(()) }