1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use teo_teon::types::enum_variant::EnumVariant;
use teo_teon::Value;
use crate::config::test::ResetDataSets;
use teo_result::Error;
use crate::object::Object;

impl TryFrom<Object> for ResetDataSets {

    type Error = Error;

    fn try_from(ref value: Object) -> std::result::Result<Self, Self::Error> {
        let teon: Value = value.try_into()?;
        let enum_variant: EnumVariant = teon.try_into()?;
        match enum_variant.value.as_str() {
            "auto" => Ok(ResetDataSets::Auto),
            "dataSets" => {
                let map = enum_variant.args.unwrap();
                let names = map.get("names").unwrap();
                Ok(ResetDataSets::DataSets(names.as_array().unwrap().iter().map(|item| item.as_array().unwrap().iter().map(|part| part.as_str().unwrap().to_owned()).collect()).collect()))
            },
            _ => Err(Error::new(format!("invalid reset data sets name: {:?}", value)))
        }
    }
}