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 在 数据库接口
每月 124 次下载
14KB
251 行
surrealdb_migration_engine
为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