48 个版本 (27 个破坏性更新)
0.34.0 | 2023年10月19日 |
---|---|
0.33.0 | 2021年9月10日 |
0.32.0 | 2021年3月24日 |
0.30.0 | 2020年9月8日 |
0.11.2 | 2017年7月21日 |
#1297 in 数据库接口
每月 24 次下载
在 3 软件包 中使用
145KB
3K SLoC
migrant_lib
嵌入式迁移管理
另请参阅
migrant
CLI
migrant_lib
允许在编译的应用程序中定义和嵌入数据库迁移和(连接)配置的管理。
可用功能
功能 | 后端 |
---|---|
d-postgres |
启用 postgres 连接 |
d-sqlite |
启用 sqlite 连接 |
d-mysql |
启用 mysql 连接 |
d-all |
启用所有后端 |
注意
- 默认情况下没有启用任何功能
- 截至
0.20.0
,d-sqlite
功能不使用rusqlite
的bundled
功能。如果您希望将sqlite
与您的应用程序捆绑在一起,您必须包含rusqlite
并在您的项目中启用bundled
功能。
用法
- 您必须启用与您的用例相关的数据库功能(
d-postgres
/d-sqlite
/d-mysql
)。 - 迁移可以定义为文件、字符串字面量或函数。
- 文件迁移可以是运行时从文件中读取或在编译时嵌入到可执行文件中(使用
include_str!
)。 - 迁移标签必须全部唯一,并且只能包含以下字符:
[a-z0-9-]
。在cli_compatible
模式下运行时(见Config::use_cli_compatible_tags
),标签还必须以时间戳为前缀,格式如下:[0-9]{14}_[a-z0-9-]+
。请参阅嵌入式兼容CLI示例。 - 函数迁移必须具有以下签名:
fn(ConnConfig) -> Result<(), Box<dyn std::error::Error>>
。请参阅嵌入式可编程示例,以获取函数迁移的工作示例。 - 当启用
d-postgres
时,您可以使用PostgresSettingsBuilder::ssl_cert_file
或设置ssl_cert_file = "..."
在您的Migrant.toml
中指定自定义/自签名的SSL证书。
fn up(_: migrant_lib::ConnConfig) -> Result<(), Box<dyn std::error::Error>> {
print!(" Up!");
Ok(())
}
fn down(_: migrant_lib::ConnConfig) -> Result<(), Box<dyn std::error::Error>> {
print!(" Down!");
Ok(())
}
config.use_migrations(&[
migrant_lib::FileMigration::with_tag("create-users-table")
.up("migrations/embedded/create_users_table/up.sql")?
.down("migrations/embedded/create_users_table/down.sql")?
.boxed(),
migrant_lib::EmbeddedMigration::with_tag("create-places-table")
.up(include_str!("../migrations/embedded/create_places_table/up.sql"))
.down(include_str!("../migrations/embedded/create_places_table/down.sql"))
.boxed(),
migrant_lib::FnMigration::with_tag("custom")
.up(up)
.down(down)
.boxed(),
])?;
CLI 兼容性
迁移管理与migrant
CLI 工具相同,也可以嵌入。此方法仅支持基于文件的迁移(即 FileMigration
或使用 include_str!
的 EmbeddedMigration
)以及那些迁移文件名必须以时间戳格式命名,如下所示:[0-9]{14}_[a-z0-9-]+
。可以通过 migrant_lib::new
或 migrant
CLI 工具生成正确命名的文件。这是必需的,因为迁移顺序隐含在文件名中,必须遵循特定格式并包含有效的时间戳。
请参阅migrant_cli_compatible示例,其中在运行时提供迁移文件和Migrant.toml
配置文件的工作示例。
请参阅嵌入式兼容CLI示例,其中在开发期间可以使用migrant
CLI 工具,并将数据库配置和迁移文件内容嵌入到应用程序中。
开发
请参阅CONTRIBUTING
许可证:MIT
依赖项
~8–25MB
~417K SLoC