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 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}