31 个版本
新增 0.17.2 | 2024 年 8 月 22 日 |
---|---|
0.17.0 | 2024 年 6 月 2 日 |
0.16.3 | 2023 年 11 月 11 日 |
0.16.2 | 2023 年 7 月 29 日 |
0.11.2 | 2023 年 3 月 27 日 |
#653 在 数据库接口
每月下载量 376
在 12 个 Crates 中使用 (直接使用 10 个)
62KB
2K SLoC
sqlmo
sqlmo
是一组用于表示 SQL 表和查询的原始数据。使用这些原始数据
- 自动生成迁移:以标准化的形式加载 SQL 表示形式 (
sqlmo::Schema
),计算模式之间的差异 (sqlmo::Migration
),并生成应用迁移的 SQL (sqlmo::Migration::to_sql
)。 - 构建 SQL 查询:以数据模型的形式表示 SQL 查询,以创建查询生成的 API。然后,生成 SQL 查询。注意:此库(目前)不支持解析 SQL 查询。
对于自动生成迁移,有一些内置的模式来源
- Postgres:
sqlmo_sqlx
- OpenAPI v3:
sqlmo_openapi
如果您需要其他来源,您应该定义一种从您的数据源构建 sqlmo::Schema
的方法,然后使用 sqlmo
自动生成迁移。
当前支持此功能的项目
如果您使用此库,请提交 PR 以将其添加到此列表。
使用方法
此示例从 postgres 数据库读取模式,定义一个空的模式(应填写),然后计算应用到的数据库的迁移。
use sqlmo_sqlx::FromPostgres;
#[tokio::main]
async fn main() {
let url = std::env::var("DATABASE_URL").unwrap();
let mut conn = sqlx::postgres::PgConnection::connect(&url).await?;
let current = Schema::try_from_postgres(&mut conn, schema_name).await?;
let end_state = Schema::default(); // Load your end-state by manually defining it, or building it from another source
let migration = current.migrate_to(end_state, &sqlmo::Options::default());
for statement in migration.statements {
let statement = statement.to_sql(Dialect::Postgres);
println!("{}", statement);
}
}
路线图
- 在计算迁移时,为列删除创建注释行
- ? 在计算迁移时,通过计算列名之间的单词距离来更改列
依赖项
~105–390KB