safe-migrate 0.8.0

Check PostgreSQL migrations against a synchronized database baseline
Documentation
use super::Resolver;
use crate::_internal::analysis::facts::{SearchPathTarget, TimeoutSetting, TimeoutSettingValue};
use crate::_internal::analysis::mutations::{
    Mutation, ReleaseSavepointMutation, RollbackToSavepointMutation, SavepointMutation,
    SearchPathChange, TimeoutSettingChange,
};
use crate::_internal::analysis::state::AnalysisState;
use crate::_internal::ast::identifiers::QualifiedName;

impl Resolver {
    pub(super) fn resolve_search_path(target: &SearchPathTarget, local: bool) -> Mutation {
        Mutation::SearchPath(SearchPathChange {
            target: target.clone(),
            local,
        })
    }

    pub(super) fn resolve_timeout(
        setting: TimeoutSetting,
        value: &TimeoutSettingValue,
        local: bool,
    ) -> Mutation {
        Mutation::TimeoutSetting(TimeoutSettingChange {
            setting,
            value: value.clone(),
            local,
        })
    }

    pub(super) fn resolve_rollback_to_savepoint(name: &str) -> Mutation {
        Mutation::RollbackToSavepoint(RollbackToSavepointMutation {
            name: name.to_string(),
        })
    }

    pub(super) fn resolve_savepoint(name: &str) -> Mutation {
        Mutation::Savepoint(SavepointMutation {
            name: name.to_string(),
        })
    }

    pub(super) fn resolve_release_savepoint(name: &str) -> Mutation {
        Mutation::ReleaseSavepoint(ReleaseSavepointMutation {
            name: name.to_string(),
        })
    }

    pub(super) fn resolve_vacuum(
        relation: Option<&QualifiedName>,
        is_full: bool,
        state: &AnalysisState,
    ) -> Mutation {
        Mutation::Vacuum {
            table_id: relation.map(|relation| Self::resolve_relation_lookup_name(relation, state)),
            is_full,
        }
    }
}