statsig_rust/override_adapter/
override_adapter_trait.rs

1use 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}