#[must_use]
pub fn sanitize_table_name(name: &str) -> String {
let sanitized: String = name
.trim()
.chars()
.map(|c| {
if c.is_alphanumeric() || c == '_' {
c
} else {
'_'
}
})
.collect();
const MAX_LENGTH: usize = 30;
const MAX_UNDERSCORES: usize = 5;
let underscore_count = sanitized.chars().filter(|&c| c == '_').count();
if sanitized.len() > MAX_LENGTH || underscore_count > MAX_UNDERSCORES {
"data".to_string()
} else if sanitized.is_empty() || sanitized.chars().all(|c| c == '_') {
"data".to_string()
} else {
sanitized
}
}