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 软件包 中使用

MIT 许可证

145KB
3K SLoC

migrant_lib

Build Status crates.io:migrant_lib docs

嵌入式迁移管理

另请参阅 migrant CLI

migrant_lib 允许在编译的应用程序中定义和嵌入数据库迁移和(连接)配置的管理。

可用功能

功能 后端
d-postgres 启用 postgres 连接
d-sqlite 启用 sqlite 连接
d-mysql 启用 mysql 连接
d-all 启用所有后端

注意

  • 默认情况下没有启用任何功能
  • 截至 0.20.0d-sqlite 功能不使用 rusqlitebundled 功能。如果您希望将 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::newmigrant CLI 工具生成正确命名的文件。这是必需的,因为迁移顺序隐含在文件名中,必须遵循特定格式并包含有效的时间戳。

请参阅migrant_cli_compatible示例,其中在运行时提供迁移文件和Migrant.toml配置文件的工作示例。

请参阅嵌入式兼容CLI示例,其中在开发期间可以使用migrant CLI 工具,并将数据库配置和迁移文件内容嵌入到应用程序中。

开发

请参阅CONTRIBUTING


许可证:MIT

依赖项

~8–25MB
~417K SLoC