statsig_rust/override_adapter/
override_adapter_trait.rs1use crate::evaluation::evaluator_result::EvaluatorResult;
2use crate::specs_response::spec_types::Spec;
3use crate::StatsigUser;
4use serde_json::Value;
5use std::collections::HashMap;
6
7pub trait OverrideAdapter: Send + Sync {
8 fn get_gate_override(
9 &self,
10 user: &StatsigUser,
11 gate_name: &str,
12 result: &mut EvaluatorResult<'_>,
13 ) -> bool;
14
15 fn get_dynamic_config_override(
16 &self,
17 user: &StatsigUser,
18 dynamic_config_name: &str,
19 result: &mut EvaluatorResult<'_>,
20 ) -> bool;
21
22 fn get_experiment_override(
23 &self,
24 user: &StatsigUser,
25 experiment_name: &str,
26 result: &mut EvaluatorResult<'_>,
27 opt_spec: Option<&Spec>,
28 ) -> bool;
29
30 fn get_layer_override(
31 &self,
32 user: &StatsigUser,
33 layer_name: &str,
34 result: &mut EvaluatorResult<'_>,
35 ) -> bool;
36
37 fn override_gate(&self, key: &str, value: bool, id: Option<&str>);
38 fn override_dynamic_config(&self, key: &str, value: HashMap<String, Value>, id: Option<&str>);
39 fn override_experiment(&self, key: &str, value: HashMap<String, Value>, id: Option<&str>);
40 fn override_experiment_by_group_name(&self, key: &str, group_name: &str, id: Option<&str>);
41 fn override_layer(&self, key: &str, value: HashMap<String, Value>, id: Option<&str>);
42
43 fn remove_gate_override(&self, key: &str, id: Option<&str>);
44 fn remove_dynamic_config_override(&self, key: &str, id: Option<&str>);
45 fn remove_experiment_override(&self, key: &str, id: Option<&str>);
46 fn remove_layer_override(&self, key: &str, id: Option<&str>);
47 fn remove_all_overrides(&self);
48}