use bamcensus_core::model::identifier::{Geoid, StateCode};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum StudyRegion {
National,
Census { geoids: Vec<String> },
}
impl StudyRegion {
pub fn get_geoids(&self) -> Result<Vec<Geoid>, String> {
match self {
StudyRegion::National => StateCode::ALL
.iter()
.map(|s| Geoid::try_from(s.to_fips_string().as_str()))
.collect::<Result<Vec<_>, _>>(),
StudyRegion::Census { geoids } => geoids
.iter()
.map(|s| Geoid::try_from(s.as_str()))
.collect::<Result<Vec<_>, _>>(),
}
}
}