use kameleoon_core::types::Variation;
use crate::{utils_ex::ArcStr, variable_ex::VariableEx};
#[derive(Debug, rustler::NifStruct)]
#[module = "Kameleoon.Types.Variation"]
#[rustler(encode)]
pub(crate) struct VariationEx {
key: ArcStr,
name: ArcStr,
id: Option<u32>,
experiment_id: Option<u32>,
variables: Vec<VariableEx>,
}
impl From<Variation> for VariationEx {
fn from(value: Variation) -> Self {
Self {
key: value.key.into(),
name: value.name.into(),
id: value.id,
experiment_id: value.experiment_id,
variables: value.variables.into_iter().map(VariableEx::from).collect(),
}
}
}
impl From<&Variation> for VariationEx {
fn from(value: &Variation) -> Self {
Self {
key: value.key.clone().into(),
name: value.name.clone().into(),
id: value.id,
experiment_id: value.experiment_id,
variables: value.variables.iter().map(VariableEx::from).collect(),
}
}
}