Crate refinery

source ·
Expand description

Powerful SQL migration toolkit for Rust.

refinery makes running migrations for different databases as easy as possible. It works by running your migrations on a provided database connection, either by embedding them on your Rust code, or via refinery_cli.
Currently, Postgres, Rusqlite, and Mysql are supported.

refinery works best with Barrel but you can also have your migrations on .sql files or use any other Rust crate for schema generation.

§Usage

  • Migrations can be defined in .sql files or Rust modules that must have a function called migration() that returns a std::string::String
  • Migrations, both .sql files and Rust modules must be named in the format V{1}__{2}.rs where {1} represents the migration version and {2} the name.
  • Migrations can be run either by embedding them on your Rust code with embed_migrations! macro, or via refinery_cli.

§Example

use rusqlite::Connection;

mod embedded {
    use refinery::embed_migrations;
    embed_migrations!("./tests/sql_migrations");
}

let mut conn = Connection::open_in_memory().unwrap();
embedded::migrations::runner().run(&mut conn).unwrap();

for more examples refer to the examples

Modules§

Macros§

  • Interpret Rust or SQL migrations and inserts a function called runner that when called returns a Runner instance with the collected migration modules.

Structs§

  • An Error occurred during a migration cycle
  • Represents a schema migration to be run on the database, this struct is used by the embed_migrations! macro to gather migration files and shouldn’t be needed by the user
  • Struct that represents the report of the migration cycle, a Report instance is returned by the Runner::run and Runner::run_async methods via Result<Report, Error>, on case of an Error during a migration, you can access the Report with Error.report
  • Struct that represents the entrypoint to run the migrations, an instance of this struct is returned by the embed_migrations! macro. Runner should not need to be instantiated manually

Enums§

  • An enum set that represents the target version up to which refinery should migrate, it is used by Runner

Functions§

  • Loads SQL migrations from a path. This enables dynamic migration discovery, as opposed to embedding. The resulting collection is ordered by version.