#迁移 #管理器 #SQL

migra

migra 是一个用于管理应用程序中 SQL 的简单库

1 个稳定版本

1.0.0 2021 年 6 月 12 日

#174 in #迁移


migra-cli 中使用

MIT/Apache

32KB
589

迁移

CI unsafe forbidden Crates.io Crates.io

迁移是一个用于管理应用程序中 SQL 的简单库。

例如,如果你有一个任务列表应用程序,你可以从版本到版本更新本地用户数据库。

这是 migra-cli 的主 crate,它允许你在任何程序语言中管理 Web 服务器上的 SQL,而不受 SQL 框架的限制。

安装

Cargo.toml 中将以下依赖项添加到依赖项中: migra = { version = "1.0" }

此 crate 在具有类似名称的功能中不需要预定义的数据库客户端。如果您想添加它们,只需安装具有附加功能的 crate(《postgres》、《mysql》、《sqlite》)。

Cargo.toml 示例

[package]
name = "my-crate"
version = "0.1.0"
authors = ["Me <[email protected]>"]

[dependencies]
migra = { version = "1.0", features = ["postgres"] }

基本用法

注意:此示例需要启用 sqlite 功能。

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(())
}

支持的数据库

数据库 功能
Postgres postgres
MySQL mysql
Sqlite sqlite

许可证

在以下许可证下授权

依赖项

~7–24MB
~376K SLoC