use once_cell::sync::OnceCell;
use std::sync::Arc;
static EXCLUDED: OnceCell<Arc<[String]>> = OnceCell::new();
pub fn set_excluded_databases(list: Vec<String>) {
let mut cleaned: Vec<String> = list
.into_iter()
.map(|s| s.trim().to_string())
.filter(|s| !s.is_empty())
.collect();
cleaned.dedup();
let _ = EXCLUDED.set(Arc::from(cleaned));
}
pub fn get_excluded_databases() -> &'static [String] {
match EXCLUDED.get() {
Some(arc) => &arc[..],
None => &[],
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_set_and_get() {
set_excluded_databases(vec![
"postgres".into(),
"template0".into(),
"template0".into(),
" ".into(),
]);
let got = get_excluded_databases();
assert_eq!(got, &["postgres".to_string(), "template0".to_string()]);
}
}