#migration #postgresql

reshape_helper

Reshape辅助库

2个版本

0.1.1 2022年8月3日
0.1.0 2022年4月19日

#9#migrations

MIT 许可证

7KB
74 代码行

Reshape Rust辅助库

Test status badge

这是一个Rust辅助库,用于自动化、零停机时间的模式迁移工具Reshape。为了实现零停机迁移,Reshape要求您的应用程序在打开数据库连接时运行一个简单的查询来选择正确的模式。此库自动执行此过程,并提供宏将正确查询直接嵌入到您的应用程序中。

安装

reshape_helper作为依赖项添加到您的Cargo.toml

[dependencies]
reshape_helper = "0.1.1"

用法

该库公开了一个宏,该宏将找到您的所有Reshape迁移文件并确定要运行的正确模式查询。该宏将在编译时进行评估,并将查询直接嵌入到您的二进制文件中,因此您在运行时不需要保留迁移文件。

以下是如何与SQLx(但与任何Postgres客户端都兼容)一起使用该库的示例

use reshape_helper::schema_query
use sqlx::postgres::PgPoolOptions;

#[async_std::main]
async fn main() {
	let reshape_schema_query = schema_query!();

	let pool = PgPoolOptions::new()
		.after_connect(|conn| Box::pin(async move {
			conn.execute(reshape_schema_query).await?;
			Ok(())
		}))
		.connect("postgres://postgres@localhost:5432/db").await?;
}

默认情况下,schema_query!将在migrations/中查找迁移文件,但您也可以指定自己的目录

use reshape_helper::schema_query

fn main() {
	let reshape_schema_query = schema_query!(
		"src/users/migrations",
		"src/todos/migrations",
	);

	// Execute reshape_schema_query against your database...
}

许可证

MIT许可证下发布。

依赖项

~3MB
~62K SLoC