database_migration/
repository.rs1use crate::error::Error;
2use crate::migration::{Migration, NewMigration, ScriptContent};
3
4pub trait ListMigrations {
5    type Iter: Iterator<Item = Result<Migration, Error>>;
6
7    fn list_all_migrations(&self) -> Result<Self::Iter, Error>;
8}
9
10pub trait ReadScriptContent {
11    fn read_script_content(&self, migration: &Migration) -> Result<ScriptContent, Error>;
12
13    fn read_script_content_for_migrations(
14        &self,
15        migrations: &[Migration],
16    ) -> Result<Vec<ScriptContent>, Error> {
17        migrations
18            .iter()
19            .map(|mig| self.read_script_content(mig))
20            .collect()
21    }
22}
23
24pub trait CreateNewMigration {
25    fn create_new_migration(&self, new_migration: NewMigration) -> Result<Migration, Error>;
26}