use crate::DriverError;
use crate::result::DriverResult;
use tracing::{debug, info, warn};
pub fn validate_number(value: &str) -> DriverResult<f64> {
debug!("Validating number: {}", value);
match value.parse::<f64>() {
Ok(num) => {
info!("Number validated: {}", num);
return Ok(num);
}
Err(_) => {
let err_msg = format!("Invalid number: {}", value);
warn!("{}", err_msg);
return Err(DriverError::validation("value", err_msg));
}
}
}
pub fn validate_integer(value: &str) -> DriverResult<i64> {
debug!("Validating integer: {}", value);
match value.parse::<i64>() {
Ok(num) => {
info!("Integer validated: {}", num);
return Ok(num);
}
Err(_) => {
let err_msg = format!("Invalid integer: {}", value);
warn!("{}", err_msg);
return Err(DriverError::validation("value", err_msg));
}
}
}
pub fn format_number(value: f64, precision: usize) -> String {
debug!("Formatting number: {} with precision {}", value, precision);
let result = format!("{:.1$}", value, precision);
info!("Number formatted: {}", result);
return result;
}
pub fn in_range(value: f64, min: f64, max: f64) -> bool {
debug!("Checking if {} is in range [{}, {}]", value, min, max);
let result = value >= min && value <= max;
info!("Number in range: {}", result);
return result;
}