Crates.io | migra |
lib.rs | migra |
version | 1.0.0 |
source | src |
created_at | 2021-06-12 22:43:35.83039 |
updated_at | 2021-06-12 22:43:35.83039 |
description | Migra is a simple library for managing SQL in your application |
homepage | https://github.com/pleshevskiy/migra |
repository | https://github.com/pleshevskiy/migra |
max_upload_size | |
id | 409444 |
size | 31,661 |
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.
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"] }
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("./tasks.db")?;
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(())
}
Database | Feature |
---|---|
Postgres | postgres |
MySQL | mysql |
Sqlite | sqlite |
Licensed under either of these: