Skip to main content

native/kameleoon_elixir_bridge/src/datafile_ex.rs

use std::collections::HashMap;

use kameleoon_core::types::DataFile as TypesDataFile;

use crate::{feature_flag_ex::FeatureFlagEx, utils_ex::ArcStr};

#[derive(Debug, rustler::NifStruct)]
#[module = "Kameleoon.Types.DataFile"]
#[rustler(encode)]
pub(crate) struct DataFileEx {
    feature_flags: HashMap<ArcStr, FeatureFlagEx>,
    date_modified: u64,
}

impl From<&TypesDataFile> for DataFileEx {
    fn from(value: &TypesDataFile) -> Self {
        Self {
            feature_flags: value
                .feature_flags
                .iter()
                .map(|(key, feature_flag)| (key.clone().into(), feature_flag.into()))
                .collect(),
            date_modified: value.date_modified,
        }
    }
}