37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
use heromodels::db::hero::OurDB;
|
|
use heromodels::models::flow::register_flow_rhai_module;
|
|
use rhai::Engine;
|
|
use std::sync::Arc;
|
|
use std::{fs, path::Path};
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Initialize Rhai engine
|
|
let mut engine = Engine::new();
|
|
|
|
// Initialize database with OurDB
|
|
// Using a temporary/in-memory database for the example
|
|
let db = Arc::new(OurDB::new("temp_flow_rhai_db", true).expect("Failed to create database"));
|
|
|
|
// Register flow Rhai module functions
|
|
register_flow_rhai_module(&mut engine, db.clone());
|
|
|
|
// Load and evaluate the Rhai script
|
|
let script_path_str = "examples/flow_rhai/flow.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 'flow.rhai' exists in the 'examples/flow_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),
|
|
}
|
|
|
|
Ok(())
|
|
}
|