use vibesql_types::SqlValue;
pub(crate) fn apply_prefix_truncation(value: &SqlValue, prefix_length: Option<u64>) -> SqlValue {
let Some(prefix_len) = prefix_length else {
return value.clone();
};
match value {
SqlValue::Varchar(s) | SqlValue::Character(s) => {
let truncated: String = s.chars().take(prefix_len as usize).collect();
let truncated = arcstr::ArcStr::from(truncated.as_str());
match value {
SqlValue::Varchar(_) => SqlValue::Varchar(truncated),
SqlValue::Character(_) => SqlValue::Character(truncated),
_ => unreachable!(),
}
}
_ => value.clone(),
}
}