use serde::{Deserialize, Serialize};
use serde_json::{Map, Value};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CalculationResponse {
pub calculator: String,
pub result: Value,
pub interpretation: String,
#[serde(default, skip_serializing_if = "Map::is_empty")]
pub working: Map<String, Value>,
pub reference: String,
}
impl CalculationResponse {
pub fn to_summary_text(&self) -> String {
let result = match &self.result {
Value::String(s) => s.clone(),
other => other.to_string(),
};
format!(
"Calculator: {}\nResult: {}\nInterpretation: {}\nReference: {}",
self.calculator, result, self.interpretation, self.reference
)
}
}