safe_migrate/rules/
mod.rs1pub 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 security;
14pub mod transactions;
15pub mod triggers;
16pub mod views;
17
18use crate::analysis::mutations::Mutation;
19use crate::analysis::state::{AnalysisState, CascadeResult, MutationResult};
20use crate::engine::config::Config;
21use crate::report::violations::{Violation, ViolationTier};
22
23pub trait Rule {
24 fn id(&self) -> &'static str;
25 fn default_tier(&self) -> ViolationTier;
26 fn recipe(&self) -> &'static str;
27
28 fn evaluate(
29 &self,
30 mutation: &Mutation,
31 result: &MutationResult,
32 pre_state: &crate::analysis::state::PreState,
33 state: &AnalysisState,
34 config: &Config,
35 cascade_closure: Option<&CascadeResult>,
36 ) -> Vec<Violation>;
37}