use std::collections::HashMap;
use kameleoon_core::types::FeatureFlag as TypesFeatureFlag;
use crate::rule_ex::RuleEx;
use crate::utils_ex::ArcStr;
use crate::variation_ex::VariationEx;
#[derive(Debug, rustler::NifStruct)]
#[module = "Kameleoon.Types.FeatureFlag"]
#[rustler(encode)]
pub(crate) struct FeatureFlagEx {
environment_enabled: bool,
default_variation_key: ArcStr,
variations: HashMap<ArcStr, VariationEx>,
rules: Vec<RuleEx>,
}
impl From<&TypesFeatureFlag> for FeatureFlagEx {
fn from(value: &TypesFeatureFlag) -> Self {
Self {
environment_enabled: value.environment_enabled,
default_variation_key: value.default_variation_key.clone().into(),
variations: value
.variations
.iter()
.map(|(key, variation)| (key.clone().into(), variation.into()))
.collect(),
rules: value.rules.iter().map(RuleEx::from).collect(),
}
}
}