use crate::provider::{constraints::Constraints, SourceValue};
use serde::Deserialize;
#[derive(Clone, Deserialize, Hash, PartialEq, Eq)]
#[serde(default)]
pub struct GetOptionsPreferences {
pub are_configurable_strings_enabled: bool,
pub are_configurable_values_enabled: bool,
pub constraints: Option<Constraints>,
pub overrides: Option<SourceValue>,
pub skip_feature_name_conversion: bool,
}
impl Default for GetOptionsPreferences {
fn default() -> Self {
Self::new()
}
}
impl GetOptionsPreferences {
pub fn new() -> Self {
Self {
are_configurable_strings_enabled: false,
are_configurable_values_enabled: false,
constraints: None,
overrides: None,
skip_feature_name_conversion: false,
}
}
pub fn are_configurable_values_enabled(&self) -> bool {
self.are_configurable_values_enabled || self.are_configurable_strings_enabled
}
pub fn set_constraints(&mut self, constraints: Option<serde_json::Value>) {
self.constraints = constraints.map(|c| Constraints { constraints: c });
}
pub fn set_constraints_json(&mut self, constraints: Option<&str>) {
self.constraints = constraints.map(|c| Constraints {
constraints: serde_json::from_str(c).expect("constraints should be valid JSON"),
});
}
}