Skip to main content

link_common/models/
utils.rs

1use super::kalam_cell_value::KalamCellValue;
2
3/// Parse an i64 from a [`KalamCellValue`] that might be a Number or a String.
4///
5/// The backend serializes Int64 as strings to preserve precision in JSON.
6/// This utility handles both formats for convenience.
7///
8/// # Example
9///
10/// ```rust
11/// use kalam_client::{models::KalamCellValue, parse_i64};
12///
13/// let num_value = KalamCellValue::int(42);
14/// let str_value = KalamCellValue::text("42");
15///
16/// assert_eq!(parse_i64(&num_value), 42);
17/// assert_eq!(parse_i64(&str_value), 42);
18/// ```
19pub fn parse_i64(value: &KalamCellValue) -> i64 {
20    match value.inner() {
21        serde_json::Value::Number(n) => n.as_i64().unwrap_or(0),
22        serde_json::Value::String(s) => s.parse::<i64>().unwrap_or(0),
23        _ => 0,
24    }
25}