[−][src]Crate refinery
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 aString
- 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
embedded_migrations
andinclude_migration_mods
macros, or viarefinery_cli
.
Example
use ttrusqlite::Connection; mod embedded { use refinery::embed_migrations; embed_migrations!("refinery/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
Macros
embed_migrations | embeds sql migration files and inserts a function called runner that when called returns a Runner instance with the collected migration files |
include_migration_mods | imports rust migration modules with migrations and inserts a function called runner that when called returns a Runner instance with the collected migration modules. |
Structs
Config | |
Migration | Represents a schema migration to be run on the database, this struct is used by the embed_migrations and the mod_migrations to gather migration files and shouldn't be needed by the user |
Runner | Struct that represents the entrypoint to run the migrations, an instance of this struct is returned by the embed_migrations and the mod_migrations runner function, Runner should not need to be instantiated manually |
Enums
ConfigDbType |