use datalogic_rs::Engine;
fn main() {
let engine = Engine::new();
let allowed = engine
.eval_str(
r#"{"and": [
{">=": [{"var": "age"}, 18]},
{"==": [{"var": "status"}, "active"]}
]}"#,
r#"{"age": 25, "status": "active"}"#,
)
.unwrap();
println!("[1] business rule: allowed = {allowed}");
let engine = Engine::builder().with_templating(true).build();
let shaped = engine
.eval_str(
r#"{
"greeting": {"cat": ["Hello, ", {"var": "name"}, "!"]},
"isAdult": {">=": [{"var": "age"}, 18]}
}"#,
r#"{"name": "Jane", "age": 25}"#,
)
.unwrap();
println!("[2] template: {shaped}");
let engine = Engine::new();
let total = engine
.eval_str(
r#"{"+": [{"var": "subtotal"}, {"var": "tax"}, {"var": "shipping"}]}"#,
r#"{"subtotal": 100, "tax": 8.5, "shipping": 5}"#,
)
.unwrap();
println!("[3a] total: {total}");
let cart_total = engine
.eval_str(
r#"{"reduce": [
{"var": "items"},
{"+": [{"var": "accumulator"}, {"var": "current.price"}]},
0
]}"#,
r#"{"items": [{"price": 29.99}, {"price": 49.99}, {"price": 19.99}]}"#,
)
.unwrap();
println!("[3b] cart_total: {cart_total}");
}