use crate::api::gateway::contracts::GatewayRequestCondition;
use crate::parser::query_builder::Condition;
use crate::utils::format::camel_to_snake_case;
pub type RequestCondition = GatewayRequestCondition;
fn is_camel_case(s: &str) -> bool {
s.chars()
.skip(1) .any(|c| c.is_ascii_uppercase())
}
pub fn to_query_conditions(
conditions: &[RequestCondition],
convert_camel_case: bool,
auto_cast_uuid_filter_values_to_text: bool,
) -> Vec<Condition> {
conditions
.iter()
.map(|condition: &RequestCondition| {
let is_already_camel_case: bool = is_camel_case(&condition.eq_column);
let column_name: String = if convert_camel_case && !is_already_camel_case {
let converted: String = camel_to_snake_case(&condition.eq_column);
converted
} else {
condition.eq_column.clone()
};
let query_condition: Condition =
Condition::eq(&column_name, condition.eq_value.clone())
.with_uuid_value_text_cast(auto_cast_uuid_filter_values_to_text);
query_condition
})
.collect()
}