libsalmo/backend/
mod.rs

1use crate::migration_data::{migrations::Migration, committed::CommittedFile};
2
3#[cfg(feature = "db_postgresql")]
4pub mod pg;
5
6#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
7pub enum MigrationStatus {
8  Untried,
9  Tried{up_to_date: bool},
10  Committed {tried: bool},
11  Executed
12}
13
14#[derive(Debug, Hash, PartialEq, Eq, Clone)]
15pub struct MigrationWithStatus {
16  pub migration: Migration,
17  pub status: MigrationStatus
18}
19
20pub trait DatabaseBackend {
21  fn migration_status(&mut self, commits: &CommittedFile, migrations: &[Migration]) -> anyhow::Result<Vec<MigrationWithStatus>>;
22  fn try_migrations(&mut self, migration: &[MigrationWithStatus]) -> anyhow::Result<()>;
23  fn untry_migrations(&mut self, migration: &[MigrationWithStatus], execute_revert_script: bool) -> anyhow::Result<()>;
24  fn execute_migrations(&mut self, migration: &[MigrationWithStatus]) -> anyhow::Result<()>;
25}