helix/dna/mds/
filter.rs

1use std::collections::HashMap;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct FilterConfig {
6    pub enabled: bool,
7    pub rules: Vec<FilterRule>,
8    pub cache_enabled: bool,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct FilterRule {
13    pub pattern: String,
14    pub action: FilterAction,
15    pub priority: i32,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub enum FilterAction {
20    Allow,
21    Deny,
22    Log,
23}
24
25impl Default for FilterConfig {
26    fn default() -> Self {
27        Self {
28            enabled: true,
29            rules: Vec::new(),
30            cache_enabled: false,
31        }
32    }
33}
34
35pub fn create_default_filter() -> FilterConfig {
36    FilterConfig::default()
37}
38
39pub fn validate_filter_config(config: &FilterConfig) -> Result<(), String> {
40    for rule in &config.rules {
41        if rule.pattern.is_empty() {
42            return Err("Filter rule pattern cannot be empty".to_string());
43        }
44    }
45    Ok(())
46}