#[cfg(test)]
mod tests;
pub mod error;
pub type Result<T> = std::result::Result<T, error::Error>;
mod simulations;
use self::simulations::{
charts::{model_set_to_d3js, scenario_to_d3js},
model::simulate_model,
scenario::simulate_scenario,
};
use serde_json::{json, Value};
pub fn simulate(input_json: &Value) -> Result<Value> {
Ok(json!({
"scenario": simulate_scenario(input_json)?,
"model": simulate_model(input_json)?,
}))
}
pub fn simulate_with_charts(input_json: &Value) -> Result<Value> {
let scenario_result = serde_json::to_string(&simulate_scenario(input_json)?)?;
let model_result = serde_json::to_string(&simulate_model(input_json)?)?;
Ok(json!({
"scenario": scenario_to_d3js(&scenario_result, vec!["risk", "v", "lef"])?,
"model": model_set_to_d3js(&model_result)?,
}))
}