Skip to main content

safe_migrate/rules/
mod.rs

1pub mod conflict;
2pub mod constraints;
3pub mod destructive;
4pub mod drift;
5pub mod expressions;
6pub mod functions;
7pub mod idempotency;
8pub mod indexes;
9pub mod opaque;
10pub mod partitions;
11pub mod policies;
12pub mod registry;
13pub mod security;
14pub mod timeouts;
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}