fuse_rule/
rule.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct Rule {
5    pub id: String,
6    pub name: String,
7    pub predicate: String, // SQL-like expression: "price > 100 AND volume < 50"
8    pub action: String,
9    pub window_seconds: Option<u64>,
10    pub version: u32,
11    #[serde(default = "default_enabled")]
12    pub enabled: bool,
13}
14
15fn default_enabled() -> bool {
16    true
17}
18
19#[derive(Debug, Clone)]
20pub struct CompiledRule {
21    pub rule: Rule,
22    // The physical expression will be stored in the evaluator
23}