use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum RulePhase {
Precondition,
Execution,
Postcondition,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Rule {
pub id: String,
pub rule: String,
pub target: String,
pub phase: RulePhase,
}
pub const KNOWN_RULES: &[&str] = &["dtcs:not_null"];
#[must_use]
pub fn is_known_rule(rule: &str) -> bool {
KNOWN_RULES.contains(&rule) || is_namespaced(rule)
}
#[must_use]
pub fn is_namespaced(identifier: &str) -> bool {
identifier.contains(':') && !identifier.starts_with("dtcs:")
}