flagd-evaluation-engine 0.0.3

Evaluation engine for flagd - JSONLogic-based targeting rules
Documentation
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct FeatureFlag {
    pub state: String,
    pub default_variant: String,
    pub variants: HashMap<String, serde_json::Value>,
    pub targeting: Option<serde_json::Value>,
    #[serde(default)]
    pub metadata: HashMap<String, serde_json::Value>,
}

impl FeatureFlag {
    pub fn get_targeting(&self) -> String {
        self.targeting
            .as_ref()
            .map(|t| t.to_string())
            .unwrap_or_else(|| "{}".to_string())
    }
}

#[derive(Debug)]
pub struct ParsingResult {
    pub flags: HashMap<String, FeatureFlag>,
    pub flag_set_metadata: HashMap<String, serde_json::Value>,
}