use serde::Deserialize;
use serde::Serialize;
use std::fmt::Debug;

use super::response::EnrichmentResponse;

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RiskResponse {
    pub smarty_key: String,
    pub data_set_name: String,
    pub attributes: RiskAttributes,
}

impl EnrichmentResponse for RiskResponse {
    fn lookup_type() -> &'static str {
        "risk"
    }
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE", default)]
pub struct RiskAttributes {
    pub agrivalue: String,
    pub alr_npctl: String,
    pub alr_vala: String,
    pub alr_valb: String,
    pub alr_valp: String,
    pub alr_vra_npctl: String,
    pub area: String,
    pub avln_afreq: String,
    pub avln_alrb: String,
    pub avln_alrp: String,
    pub avln_alr_npctl: String,
    pub avln_ealb: String,
    pub avln_ealp: String,
    pub avln_ealpe: String,
    pub avln_ealr: String,
    pub avln_eals: String,
    pub avln_ealt: String,
    pub avln_evnts: String,
    pub avln_expb: String,
    pub avln_expp: String,
    pub avln_exppe: String,
    pub avln_expt: String,
    pub avln_exp_area: String,
    pub avln_hlrb: String,
    pub avln_hlrp: String,
    pub avln_hlrr: String,
    pub avln_riskr: String,
    pub avln_risks: String,
    pub avln_riskv: String,
    pub buildvalue: String,
    pub cfld_afreq: String,
    pub cfld_alrb: String,
    pub cfld_alrp: String,
    pub cfld_alr_npctl: String,
    pub cfld_ealb: String,
    pub cfld_ealp: String,
    pub cfld_ealpe: String,
    pub cfld_ealr: String,
    pub cfld_eals: String,
    pub cfld_ealt: String,
    pub cfld_evnts: String,
    pub cfld_expb: String,
    pub cfld_expp: String,
    pub cfld_exppe: String,
    pub cfld_expt: String,
    pub cfld_exp_area: String,
    pub cfld_hlrb: String,
    pub cfld_hlrp: String,
    pub cfld_hlrr: String,
    pub cfld_riskr: String,
    pub cfld_risks: String,
    pub cfld_riskv: String,
    pub county: String,
    pub countyfips: String,
    pub countytype: String,
    pub crf_value: String,
    pub cwav_afreq: String,
    pub cwav_alra: String,
    pub cwav_alrb: String,
    pub cwav_alrp: String,
    pub cwav_alr_npctl: String,
    pub cwav_eala: String,
    pub cwav_ealb: String,
    pub cwav_ealp: String,
    pub cwav_ealpe: String,
    pub cwav_ealr: String,
    pub cwav_eals: String,
    pub cwav_ealt: String,
    pub cwav_evnts: String,
    pub cwav_expa: String,
    pub cwav_expb: String,
    pub cwav_expp: String,
    pub cwav_exppe: String,
    pub cwav_expt: String,
    pub cwav_exp_area: String,
    pub cwav_hlra: String,
    pub cwav_hlrb: String,
    pub cwav_hlrp: String,
    pub cwav_hlrr: String,
    pub cwav_riskr: String,
    pub cwav_risks: String,
    pub cwav_riskv: String,
    pub drgt_afreq: String,
    pub drgt_alra: String,
    pub drgt_alr_npctl: String,
    pub drgt_eala: String,
    pub drgt_ealr: String,
    pub drgt_eals: String,
    pub drgt_ealt: String,
    pub drgt_evnts: String,
    pub drgt_expa: String,
    pub drgt_expt: String,
    pub drgt_exp_area: String,
    pub drgt_hlra: String,
    pub drgt_hlrr: String,
    pub drgt_riskr: String,
    pub drgt_risks: String,
    pub drgt_riskv: String,
    pub eal_ratng: String,
    pub eal_score: String,
    pub eal_spctl: String,
    pub eal_vala: String,
    pub eal_valb: String,
    pub eal_valp: String,
    pub eal_valpe: String,
    pub eal_valt: String,
    pub erqk_afreq: String,
    pub erqk_alrb: String,
    pub erqk_alrp: String,
    pub erqk_alr_npctl: String,
    pub erqk_ealb: String,
    pub erqk_ealp: String,
    pub erqk_ealpe: String,
    pub erqk_ealr: String,
    pub erqk_eals: String,
    pub erqk_ealt: String,
    pub erqk_evnts: String,
    pub erqk_expb: String,
    pub erqk_expp: String,
    pub erqk_exppe: String,
    pub erqk_expt: String,
    pub erqk_exp_area: String,
    pub erqk_hlrb: String,
    pub erqk_hlrp: String,
    pub erqk_hlrr: String,
    pub erqk_riskr: String,
    pub erqk_risks: String,
    pub erqk_riskv: String,
    pub hail_afreq: String,
    pub hail_alra: String,
    pub hail_alrb: String,
    pub hail_alrp: String,
    pub hail_alr_npctl: String,
    pub hail_eala: String,
    pub hail_ealb: String,
    pub hail_ealp: String,
    pub hail_ealpe: String,
    pub hail_ealr: String,
    pub hail_eals: String,
    pub hail_ealt: String,
    pub hail_evnts: String,
    pub hail_expa: String,
    pub hail_expb: String,
    pub hail_expp: String,
    pub hail_exppe: String,
    pub hail_expt: String,
    pub hail_exp_area: String,
    pub hail_hlra: String,
    pub hail_hlrb: String,
    pub hail_hlrp: String,
    pub hail_hlrr: String,
    pub hail_riskr: String,
    pub hail_risks: String,
    pub hail_riskv: String,
    pub hrcn_afreq: String,
    pub hrcn_alra: String,
    pub hrcn_alrb: String,
    pub hrcn_alrp: String,
    pub hrcn_alr_npctl: String,
    pub hrcn_eala: String,
    pub hrcn_ealb: String,
    pub hrcn_ealp: String,
    pub hrcn_ealpe: String,
    pub hrcn_ealr: String,
    pub hrcn_eals: String,
    pub hrcn_ealt: String,
    pub hrcn_evnts: String,
    pub hrcn_expa: String,
    pub hrcn_expb: String,
    pub hrcn_expp: String,
    pub hrcn_exppe: String,
    pub hrcn_expt: String,
    pub hrcn_exp_area: String,
    pub hrcn_hlra: String,
    pub hrcn_hlrb: String,
    pub hrcn_hlrp: String,
    pub hrcn_hlrr: String,
    pub hrcn_riskr: String,
    pub hrcn_risks: String,
    pub hrcn_riskv: String,
    pub hwav_afreq: String,
    pub hwav_alra: String,
    pub hwav_alrb: String,
    pub hwav_alrp: String,
    pub hwav_alr_npctl: String,
    pub hwav_eala: String,
    pub hwav_ealb: String,
    pub hwav_ealp: String,
    pub hwav_ealpe: String,
    pub hwav_ealr: String,
    pub hwav_eals: String,
    pub hwav_ealt: String,
    pub hwav_evnts: String,
    pub hwav_expa: String,
    pub hwav_expb: String,
    pub hwav_expp: String,
    pub hwav_exppe: String,
    pub hwav_expt: String,
    pub hwav_exp_area: String,
    pub hwav_hlra: String,
    pub hwav_hlrb: String,
    pub hwav_hlrp: String,
    pub hwav_hlrr: String,
    pub hwav_riskr: String,
    pub hwav_risks: String,
    pub hwav_riskv: String,
    pub istm_afreq: String,
    pub istm_alrb: String,
    pub istm_alrp: String,
    pub istm_alr_npctl: String,
    pub istm_ealb: String,
    pub istm_ealp: String,
    pub istm_ealpe: String,
    pub istm_ealr: String,
    pub istm_eals: String,
    pub istm_ealt: String,
    pub istm_evnts: String,
    pub istm_expb: String,
    pub istm_expp: String,
    pub istm_exppe: String,
    pub istm_expt: String,
    pub istm_exp_area: String,
    pub istm_hlrb: String,
    pub istm_hlrp: String,
    pub istm_hlrr: String,
    pub istm_riskr: String,
    pub istm_risks: String,
    pub istm_riskv: String,
    pub lnds_afreq: String,
    pub lnds_alrb: String,
    pub lnds_alrp: String,
    pub lnds_alr_npctl: String,
    pub lnds_ealb: String,
    pub lnds_ealp: String,
    pub lnds_ealpe: String,
    pub lnds_ealr: String,
    pub lnds_eals: String,
    pub lnds_ealt: String,
    pub lnds_evnts: String,
    pub lnds_expb: String,
    pub lnds_expp: String,
    pub lnds_exppe: String,
    pub lnds_expt: String,
    pub lnds_exp_area: String,
    pub lnds_hlrb: String,
    pub lnds_hlrp: String,
    pub lnds_hlrr: String,
    pub lnds_riskr: String,
    pub lnds_risks: String,
    pub lnds_riskv: String,
    pub ltng_afreq: String,
    pub ltng_alrb: String,
    pub ltng_alrp: String,
    pub ltng_alr_npctl: String,
    pub ltng_ealb: String,
    pub ltng_ealp: String,
    pub ltng_ealpe: String,
    pub ltng_ealr: String,
    pub ltng_eals: String,
    pub ltng_ealt: String,
    pub ltng_evnts: String,
    pub ltng_expb: String,
    pub ltng_expp: String,
    pub ltng_exppe: String,
    pub ltng_expt: String,
    pub ltng_exp_area: String,
    pub ltng_hlrb: String,
    pub ltng_hlrp: String,
    pub ltng_hlrr: String,
    pub ltng_riskr: String,
    pub ltng_risks: String,
    pub ltng_riskv: String,
    pub nri_ver: String,
    pub population: String,
    pub resl_ratng: String,
    pub resl_score: String,
    pub resl_spctl: String,
    pub resl_value: String,
    pub rfld_afreq: String,
    pub rfld_alra: String,
    pub rfld_alrb: String,
    pub rfld_alrp: String,
    pub rfld_alr_npctl: String,
    pub rfld_eala: String,
    pub rfld_ealb: String,
    pub rfld_ealp: String,
    pub rfld_ealpe: String,
    pub rfld_ealr: String,
    pub rfld_eals: String,
    pub rfld_ealt: String,
    pub rfld_evnts: String,
    pub rfld_expa: String,
    pub rfld_expb: String,
    pub rfld_expp: String,
    pub rfld_exppe: String,
    pub rfld_expt: String,
    pub rfld_exp_area: String,
    pub rfld_hlra: String,
    pub rfld_hlrb: String,
    pub rfld_hlrp: String,
    pub rfld_hlrr: String,
    pub rfld_riskr: String,
    pub rfld_risks: String,
    pub rfld_riskv: String,
    pub risk_ratng: String,
    pub risk_score: String,
    pub risk_spctl: String,
    pub risk_value: String,
    pub sovi_ratng: String,
    pub sovi_score: String,
    pub sovi_spctl: String,
    pub state: String,
    pub stateabbrv: String,
    pub statefips: String,
    pub stcofips: String,
    pub swnd_afreq: String,
    pub swnd_alra: String,
    pub swnd_alrb: String,
    pub swnd_alrp: String,
    pub swnd_alr_npctl: String,
    pub swnd_eala: String,
    pub swnd_ealb: String,
    pub swnd_ealp: String,
    pub swnd_ealpe: String,
    pub swnd_ealr: String,
    pub swnd_eals: String,
    pub swnd_ealt: String,
    pub swnd_evnts: String,
    pub swnd_expa: String,
    pub swnd_expb: String,
    pub swnd_expp: String,
    pub swnd_exppe: String,
    pub swnd_expt: String,
    pub swnd_exp_area: String,
    pub swnd_hlra: String,
    pub swnd_hlrb: String,
    pub swnd_hlrp: String,
    pub swnd_hlrr: String,
    pub swnd_riskr: String,
    pub swnd_risks: String,
    pub swnd_riskv: String,
    pub tract: String,
    pub tractfips: String,
    pub trnd_afreq: String,
    pub trnd_alra: String,
    pub trnd_alrb: String,
    pub trnd_alrp: String,
    pub trnd_alr_npctl: String,
    pub trnd_eala: String,
    pub trnd_ealb: String,
    pub trnd_ealp: String,
    pub trnd_ealpe: String,
    pub trnd_ealr: String,
    pub trnd_eals: String,
    pub trnd_ealt: String,
    pub trnd_evnts: String,
    pub trnd_expa: String,
    pub trnd_expb: String,
    pub trnd_expp: String,
    pub trnd_exppe: String,
    pub trnd_expt: String,
    pub trnd_exp_area: String,
    pub trnd_hlra: String,
    pub trnd_hlrb: String,
    pub trnd_hlrp: String,
    pub trnd_hlrr: String,
    pub trnd_riskr: String,
    pub trnd_risks: String,
    pub trnd_riskv: String,
    pub tsun_afreq: String,
    pub tsun_alrb: String,
    pub tsun_alrp: String,
    pub tsun_alr_npctl: String,
    pub tsun_ealb: String,
    pub tsun_ealp: String,
    pub tsun_ealpe: String,
    pub tsun_ealr: String,
    pub tsun_eals: String,
    pub tsun_ealt: String,
    pub tsun_evnts: String,
    pub tsun_expb: String,
    pub tsun_expp: String,
    pub tsun_exppe: String,
    pub tsun_expt: String,
    pub tsun_exp_area: String,
    pub tsun_hlrb: String,
    pub tsun_hlrp: String,
    pub tsun_hlrr: String,
    pub tsun_riskr: String,
    pub tsun_risks: String,
    pub tsun_riskv: String,
    pub vlcn_afreq: String,
    pub vlcn_alrb: String,
    pub vlcn_alrp: String,
    pub vlcn_alr_npctl: String,
    pub vlcn_ealb: String,
    pub vlcn_ealp: String,
    pub vlcn_ealpe: String,
    pub vlcn_ealr: String,
    pub vlcn_eals: String,
    pub vlcn_ealt: String,
    pub vlcn_evnts: String,
    pub vlcn_expb: String,
    pub vlcn_expp: String,
    pub vlcn_exppe: String,
    pub vlcn_expt: String,
    pub vlcn_exp_area: String,
    pub vlcn_hlrb: String,
    pub vlcn_hlrp: String,
    pub vlcn_hlrr: String,
    pub vlcn_riskr: String,
    pub vlcn_risks: String,
    pub vlcn_riskv: String,
    pub wfir_afreq: String,
    pub wfir_alra: String,
    pub wfir_alrb: String,
    pub wfir_alrp: String,
    pub wfir_alr_npctl: String,
    pub wfir_eala: String,
    pub wfir_ealb: String,
    pub wfir_ealp: String,
    pub wfir_ealpe: String,
    pub wfir_ealr: String,
    pub wfir_eals: String,
    pub wfir_ealt: String,
    pub wfir_evnts: String,
    pub wfir_expa: String,
    pub wfir_expb: String,
    pub wfir_expp: String,
    pub wfir_exppe: String,
    pub wfir_expt: String,
    pub wfir_exp_area: String,
    pub wfir_hlra: String,
    pub wfir_hlrb: String,
    pub wfir_hlrp: String,
    pub wfir_hlrr: String,
    pub wfir_riskr: String,
    pub wfir_risks: String,
    pub wfir_riskv: String,
    pub wntw_afreq: String,
    pub wntw_alra: String,
    pub wntw_alrb: String,
    pub wntw_alrp: String,
    pub wntw_alr_npctl: String,
    pub wntw_eala: String,
    pub wntw_ealb: String,
    pub wntw_ealp: String,
    pub wntw_ealpe: String,
    pub wntw_ealr: String,
    pub wntw_eals: String,
    pub wntw_ealt: String,
    pub wntw_evnts: String,
    pub wntw_expa: String,
    pub wntw_expb: String,
    pub wntw_expp: String,
    pub wntw_exppe: String,
    pub wntw_expt: String,
    pub wntw_exp_area: String,
    pub wntw_hlra: String,
    pub wntw_hlrb: String,
    pub wntw_hlrp: String,
    pub wntw_hlrr: String,
    pub wntw_riskr: String,
    pub wntw_risks: String,
    pub wntw_riskv: String,
}
