1 个稳定版本
1.0.0 | 2021 年 6 月 12 日 |
---|
#174 in #迁移
在 migra-cli 中使用
32KB
589 行
迁移
迁移是一个用于管理应用程序中 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 |
许可证
在以下许可证下授权
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
依赖项
~7–24MB
~376K SLoC