48 lines
1.7 KiB
Rust
48 lines
1.7 KiB
Rust
use heromodels::db::hero::OurDB;
|
|
use rhailib_dsl::core::register_core_rhai_module;
|
|
use rhai::{Engine, Dynamic};
|
|
use std::sync::Arc;
|
|
use std::{fs, path::Path};
|
|
|
|
const CALLER_ID: &str = "example_caller";
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Initialize Rhai engine
|
|
let mut engine = Engine::new();
|
|
|
|
// Initialize database with OurDB
|
|
let db_path = "temp_core_db";
|
|
// Clean up previous database file if it exists
|
|
if Path::new(db_path).exists() {
|
|
fs::remove_dir_all(db_path)?;
|
|
}
|
|
let _db = Arc::new(OurDB::new(db_path, true).expect("Failed to create database"));
|
|
|
|
// Register the library module with Rhai
|
|
register_core_rhai_module(&mut engine);
|
|
|
|
let mut db_config = rhai::Map::new();
|
|
db_config.insert("DB_PATH".into(), db_path.into());
|
|
db_config.insert("CALLER_PUBLIC_KEY".into(), CALLER_ID.into());
|
|
db_config.insert("CIRCLE_PUBLIC_KEY".into(), CALLER_ID.into());
|
|
engine.set_default_tag(Dynamic::from(db_config)); // Or pass via CallFnOptions
|
|
|
|
// Load and evaluate the Rhai script
|
|
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
|
let script_path = Path::new(manifest_dir).join("examples").join("core").join("core.rhai");
|
|
println!("Script path: {}", script_path.display());
|
|
let script = fs::read_to_string(&script_path)?;
|
|
|
|
println!("--- Running Core Rhai Script ---");
|
|
match engine.eval::<()>(&script) {
|
|
Ok(_) => println!("\n--- Script executed successfully! ---"),
|
|
Err(e) => eprintln!("\n--- Script execution failed: {} ---", e),
|
|
}
|
|
|
|
// Clean up the database file
|
|
fs::remove_dir_all(db_path)?;
|
|
println!("--- Cleaned up temporary database. ---");
|
|
|
|
Ok(())
|
|
}
|