open_feature_flagd/resolver/in_process/model/
feature_flag.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5#[serde(rename_all = "camelCase")]
6pub struct FeatureFlag {
7    pub state: String,
8    pub default_variant: String,
9    pub variants: HashMap<String, serde_json::Value>,
10    pub targeting: Option<serde_json::Value>,
11    #[serde(default)]
12    pub metadata: HashMap<String, serde_json::Value>,
13}
14
15impl FeatureFlag {
16    pub fn get_targeting(&self) -> String {
17        self.targeting
18            .as_ref()
19            .map(|t| t.to_string())
20            .unwrap_or_else(|| "{}".to_string())
21    }
22}
23
24#[derive(Debug)]
25pub struct ParsingResult {
26    pub flags: HashMap<String, FeatureFlag>,
27    pub flag_set_metadata: HashMap<String, serde_json::Value>,
28}