safe_migrate/rules/
mod.rs1pub mod constraints;
3pub mod destructive;
4pub mod expressions;
5pub mod idempotency;
6pub mod indexes;
7pub mod opaque;
8pub mod partitions;
9pub mod transactions;
10pub mod views;
11
12use crate::analysis::mutations::Mutation;
13use crate::analysis::state::{AnalysisState, CascadeResult, MutationResult};
14use crate::ast::identifiers::ObjectId;
15use crate::engine::config::Config;
16use crate::model::relation::RelationState;
17use crate::report::violations::{Violation, ViolationTier};
18use std::collections::HashMap;
19
20pub trait Rule {
21 fn id(&self) -> &'static str;
22 fn default_tier(&self) -> ViolationTier;
23 fn recipe(&self) -> &'static str;
24
25 fn evaluate(
26 &self,
27 mutation: &Mutation,
28 result: &MutationResult,
29 pre_relations: &HashMap<ObjectId, RelationState>,
30 state: &AnalysisState, config: &Config,
32 cascade_closure: Option<&CascadeResult>, ) -> Vec<Violation>;
34}