Expand description
§Migra
Migra is a simple library for managing SQL in your application.
For example, if you have a task list application, you can update the local user database from version to version.
This is main crate for migra-cli, which allows you to manege SQL for web servers in any program language without being bound to SQL frameworks.
§Installation
Add migra = { version = "1.0" } as a dependency in Cargo.toml.
This crate has not required predefined database clients in features with similar name.
If you want to add them, just install crate with additional features (postgres, mysql, sqlite).
Cargo.toml example:
[package]
name = "my-crate"
version = "0.1.0"
authors = ["Me <user@rust-lang.org>"]
[dependencies]
migra = { version = "1.0", features = ["postgres"] }§Basic usage
Note: This example requires to enable sqlite feature.
use migra::clients::{OpenDatabaseConnection, SqliteClient};
use migra::managers::{ManageTransaction, ManageMigrations};
fn main() -> migra::Result<()> {
let mut client = SqliteClient::new(":memory:")?;
client.create_migrations_table()?;
let mut migrations = client.get_applied_migrations()?;
client
.begin_transaction()
.and_then(|_| {
migrations.should_run_upgrade_migration(
&mut client,
"20210615_initial_migration",
r#"CREATE TABLE IF NOT EXISTS tasks (
title TEXT NOT NULL
);"#,
)?;
Ok(())
})
.and_then(|res| client.commit_transaction().and(Ok(res)))
.or_else(|err| client.rollback_transaction().and(Err(err)));
Ok(())
}§Supported databases
| Database Client | Feature |
|---|---|
Postgres | postgres |
MySQL | mysql |
Sqlite | sqlite |
Re-exports§
pub use errors::Error;pub use errors::MigraResult as Result;pub use errors::StdResult;pub use migration::List as MigrationList;pub use migration::Migration;
Modules§
- clients
- Includes additional client tools and contains predefined database clients that have been enabled in the features.
- errors
- Includes all types of errors that uses in the crate.
- fs
- Includes utilities that use the file system to work.
- managers
- Includes all the basic traits that will allow you to create your own client.
- migration
- Includes basic structures of migration and migration lists, that are used in managers and fs utils.