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