6个版本

0.2.1 2024年7月20日
0.2.0 2024年4月15日
0.1.1 2024年2月5日
0.0.2 2024年1月31日

#1845数据库接口

Download history 136/week @ 2024-04-12 11/week @ 2024-04-19 2/week @ 2024-05-17 1/week @ 2024-05-24 127/week @ 2024-06-07 13/week @ 2024-06-14 4/week @ 2024-07-05 114/week @ 2024-07-19 6/week @ 2024-07-26

每月 124 次下载

MIT 协议

14KB
251

surrealdb_migration_engine

crates.io License: MIT

为SurrealDB提供的一个简单而强大的迁移引擎。要使其工作,你需要以下内容

#[derive(rust_embed::RustEmbed)]
#[folder = "migrations"]
struct MigrationFiles;

#[derive(rust_embed::RustEmbed)]
#[folder = "schema"]
struct SchemaFiles;

async fn main() {
    // create surealdb `client`

    surrealdb_migration_engine::run::<MigrationFiles,SchemaFiles>(&client).await?;

    // the rest of your code
}

工作原理

surrealdb_migration_engine基于两个概念:迁移模式。迁移是对现有模式的应用查询(更改)。模式是设置数据库结构的查询。模式和迁移位于它们自己的目录中,每个文件按顺序编号,例如:0001_add_age_to_user_table.surql。这些目录中的每一个都是通过rust_embed包与你的二进制文件一起编译的。这意味着适当的迁移或模式创建将在运行时发生。所有迁移和模式更改都是在单个事务中完成的,所以如果其中一个失败,它们都会失败。

surrealdb_migration_engine在您的数据库中创建一个migrations表,以跟踪已运行的迁移。逻辑流程如下

  • 如果migrations表不存在,则仅运行模式文件,创建一个migrations表并将所有当前迁移文件添加到表中。
  • 如果migrations表存在,则运行不在migrations表中的任何迁移文件,并将这些迁移插入到migrations表中。

简单但非常表达!

用途

  • surrealdb_migration_engine包含在您的应用程序中,以便每次运行应用程序时,模式始终是最新的。
  • surrealdb_migration_engine包含在一个基本的可执行文件中,该文件在需要时运行必要的迁移或创建模式。

依赖关系

~45–78MB
~1.5M SLoC