migrant_lib

Build Status crates.io:migrant_lib docs

Embeddable migration management

Also see migrant CLI

migrant_lib allows defining and embedding management of migrations in your compiled application.

Available Features:

| Feature | Backend | |---------------|------------------------------| | d-postgres | Enable postgres connectivity | | d-sqlite | Enable sqlite connectivity | | d-mysql | Enable mysql connectivity | | d-all | Enable all backends |

Note: No features are enabled by default


```rust fn up(_: DbConn) -> Result<(), Box> { print!(" Up!"); Ok(()) }

fn down(_: DbConn) -> Result<(), Box> { print!(" Down!"); Ok(()) }

config.usemigrations(vec![ FileMigration::withtag("initial")? .up("migrations/embedded/initial/up.sql")? .down("migrations/embedded/initial/down.sql")? .boxed(), EmbeddedMigration::withtag("second")? .up(includestr!("../migrations/embedded/second/up.sql")) .down(includestr!("../migrations/embedded/second/down.sql")) .boxed(), FnMigration::withtag("custom")? .up(up) .down(down) .boxed(), ])?; ```


Migrations management identical to the migrant cli tool can also be embedded. This method only supports file-based migrations and those migration files must be generated by migrant_lib::new (or the migrant cli). This is required because migration order is implied by file names which must follow a specific format and contain a valid timestamp.

See the migrantclicompatible example for a working sample.

License: MIT