Skip to main content

safe_migrate/rules/
mod.rs

1// FILE: src/rules/mod.rs
2pub mod conflict;
3pub mod constraints;
4pub mod destructive;
5pub mod drift;
6pub mod expressions;
7pub mod functions;
8pub mod idempotency;
9pub mod indexes;
10pub mod opaque;
11pub mod partitions;
12pub mod policies;
13pub mod registry;
14pub mod security;
15pub mod transactions;
16pub mod triggers;
17pub mod views;
18
19use crate::analysis::mutations::Mutation;
20use crate::analysis::state::{AnalysisState, CascadeResult, MutationResult};
21use crate::engine::config::Config;
22use crate::report::violations::{Violation, ViolationTier};
23
24pub trait Rule {
25    fn id(&self) -> &'static str;
26    fn default_tier(&self) -> ViolationTier;
27    fn recipe(&self) -> &'static str;
28
29    fn evaluate(
30        &self,
31        mutation: &Mutation,
32        result: &MutationResult,
33        pre_state: &crate::analysis::state::PreState,
34        state: &AnalysisState,
35        config: &Config,
36        cascade_closure: Option<&CascadeResult>,
37    ) -> Vec<Violation>;
38}