db/herodb/examples/rhai_demo.rs
2025-04-04 10:45:09 +02:00

38 lines
1.3 KiB
Rust

//! Demonstrates how to use the Rhai wrappers for our models
use herodb::zaz::rhai::{run_script_file, run_example_script};
use std::path::PathBuf;
use std::fs;
use std::time::SystemTime;
fn main() -> Result<(), String> {
println!("=== RHAI MODEL WRAPPERS DEMONSTRATION ===");
// Run our test script that creates model objects
let test_script_path = "src/zaz/rhai/test.rhai";
println!("\n1. Running model creation test script: {}", test_script_path);
run_script_file(test_script_path)?;
// Create temporary directory for DB example
let temp_dir = create_temp_dir()
.map_err(|e| format!("Failed to create temp dir: {}", e))?;
// Run our example script that uses the DB
println!("\n2. Running example with database at: {:?}", temp_dir);
run_example_script(temp_dir.to_str().unwrap())?;
println!("\n=== DEMONSTRATION COMPLETED SUCCESSFULLY ===");
Ok(())
}
/// Creates a simple temporary directory
fn create_temp_dir() -> std::io::Result<PathBuf> {
let temp_dir = std::env::temp_dir();
let random_name = format!("rhai-demo-{}", SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_millis());
let path = temp_dir.join(random_name);
fs::create_dir_all(&path)?;
Ok(path)
}