use crate::types::EntityType;
use serde::{Deserialize, Serialize};
use std::collections::{HashMap, HashSet};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct PolicyConfig {
pub enabled_entities: HashSet<EntityType>,
pub thresholds: HashMap<EntityType, f32>,
pub default_threshold: f32,
}
impl Default for PolicyConfig {
fn default() -> Self {
Self {
enabled_entities: HashSet::new(),
thresholds: HashMap::new(),
default_threshold: 0.5,
}
}
}
impl PolicyConfig {
pub fn threshold_for(&self, entity: &EntityType) -> f32 {
self.thresholds
.get(entity)
.copied()
.unwrap_or(self.default_threshold)
}
pub fn is_enabled(&self, entity: &EntityType) -> bool {
if self.enabled_entities.is_empty() {
return true;
}
self.enabled_entities.contains(entity)
}
}