springtime_migrate_refinery/migration.rs
1//! Bridge between *Springtime* and `refinery` migrations.
2
3#[cfg(test)]
4use mockall::automock;
5use refinery_core::Migration;
6use springtime::runner::ErrorPtr;
7use springtime_di::injectable;
8
9/// Embed migrations from a given path (`migrations` by default). Path is inspected for `*.sql`
10/// files, which are converted into [MigrationSources](MigrationSource).
11///
12/// ```no_run
13/// use springtime_migrate_refinery::migration::embed_migrations;
14/// embed_migrations!("examples/migrations");
15/// ```
16pub use springtime_migrate_refinery_macros::embed_migrations;
17
18/// A source for [Migrations](Migration).
19#[injectable]
20#[cfg_attr(test, automock)]
21pub trait MigrationSource {
22 /// Provides a migration from this source.
23 fn migrations(&self) -> Result<Vec<Migration>, ErrorPtr>;
24}