bamcensus-lehd 0.1.0

Work with Longitudinal Employer-Household Dynamics (LEHD) datasets
Documentation
use bamcensus_core::model::identifier::{Geoid, GeoidType};
use serde::{Deserialize, Serialize};

use super::WacSegment;

#[derive(Serialize, Deserialize, Debug, Clone)]
#[allow(non_snake_case)]
pub struct WacRow {
    pub w_geocode: String,
    pub C000: f64,
    pub CA01: f64,
    pub CA02: f64,
    pub CA03: f64,
    pub CE01: f64,
    pub CE02: f64,
    pub CE03: f64,
    pub CNS01: f64,
    pub CNS02: f64,
    pub CNS03: f64,
    pub CNS04: f64,
    pub CNS05: f64,
    pub CNS06: f64,
    pub CNS07: f64,
    pub CNS08: f64,
    pub CNS09: f64,
    pub CNS10: f64,
    pub CNS11: f64,
    pub CNS12: f64,
    pub CNS13: f64,
    pub CNS14: f64,
    pub CNS15: f64,
    pub CNS16: f64,
    pub CNS17: f64,
    pub CNS18: f64,
    pub CNS19: f64,
    pub CNS20: f64,
    pub CR01: f64,
    pub CR02: f64,
    pub CR03: f64,
    pub CR04: f64,
    pub CR05: f64,
    pub CR07: f64,
    pub CT01: f64,
    pub CT02: f64,
    pub CD01: f64,
    pub CD02: f64,
    pub CD03: f64,
    pub CD04: f64,
    pub CS01: f64,
    pub CS02: f64,
    pub createdate: String,
}

impl WacRow {
    pub fn get(&self, segment: &WacSegment) -> f64 {
        match segment {
            WacSegment::C000 => self.C000,
            WacSegment::CA01 => self.CA01,
            WacSegment::CA02 => self.CA02,
            WacSegment::CA03 => self.CA03,
            WacSegment::CE01 => self.CE01,
            WacSegment::CE02 => self.CE02,
            WacSegment::CE03 => self.CE03,
            WacSegment::CNS01 => self.CNS01,
            WacSegment::CNS02 => self.CNS02,
            WacSegment::CNS03 => self.CNS03,
            WacSegment::CNS04 => self.CNS04,
            WacSegment::CNS05 => self.CNS05,
            WacSegment::CNS06 => self.CNS06,
            WacSegment::CNS07 => self.CNS07,
            WacSegment::CNS08 => self.CNS08,
            WacSegment::CNS09 => self.CNS09,
            WacSegment::CNS10 => self.CNS10,
            WacSegment::CNS11 => self.CNS11,
            WacSegment::CNS12 => self.CNS12,
            WacSegment::CNS13 => self.CNS13,
            WacSegment::CNS14 => self.CNS14,
            WacSegment::CNS15 => self.CNS15,
            WacSegment::CNS16 => self.CNS16,
            WacSegment::CNS17 => self.CNS17,
            WacSegment::CNS18 => self.CNS18,
            WacSegment::CNS19 => self.CNS19,
            WacSegment::CNS20 => self.CNS20,
            WacSegment::CR01 => self.CR01,
            WacSegment::CR02 => self.CR02,
            WacSegment::CR03 => self.CR03,
            WacSegment::CR04 => self.CR04,
            WacSegment::CR05 => self.CR05,
            WacSegment::CR07 => self.CR07,
            WacSegment::CT01 => self.CT01,
            WacSegment::CT02 => self.CT02,
            WacSegment::CD01 => self.CD01,
            WacSegment::CD02 => self.CD02,
            WacSegment::CD03 => self.CD03,
            WacSegment::CD04 => self.CD04,
            WacSegment::CS01 => self.CS01,
            WacSegment::CS02 => self.CS02,
        }
    }
}

impl WacRow {
    pub fn geoid(&self) -> Result<Geoid, String> {
        GeoidType::Block.geoid_from_str(&self.w_geocode)
    }
}