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}