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