4个版本
0.2.0 | 2024年1月18日 |
---|---|
0.1.2 | 2023年8月30日 |
0.1.1 | 2023年8月29日 |
0.1.0 | 2023年8月28日 |
#2264 in 数据库接口
46KB
750 行
database-schema
这个crate提供了一个简单的方法将数据库结构导出到一个文件中,格式为SQL。
它受到了ruby on rails 模式导出的启发。
使用方法
use std::path::PathBuf;
database_schema::generate_without_runtime_using_defaults!();
功能标志
database-schema
使用一系列 功能标志 来减小库的大小,从而减小您的二进制文件的大小。使用此包的方式是选择适合其用例的正确功能标志组合。以下是可以用到的功能标志列表和为每个用例推荐的组合。
sqlite
: 启用SQLite支持。postgres
: 启用PostgreSQL支持。mysql
: 启用MySQL支持。sqlx
: 启用 sqlx 支持。diesel
: 启用 diesel 支持。
功能标志矩阵
数据库 | 查询构建器 | 运行时 |
---|---|---|
sqlite |
sqlx |
runtime-async-std |
sqlite |
sqlx |
runtime-tokio |
sqlite |
diesel |
|
mysql |
sqlx |
runtime-async-std |
mysql |
sqlx |
runtime-tokio |
mysql |
diesel |
|
postgres |
sqlx |
runtime-async-std |
postgres |
sqlx |
runtime-tokio |
postgres |
diesel |
组合功能标志
以下是为每个用例推荐的功能标志组合。
首先选择以下数据库功能标志之一
sqlite
mysql
postgres
然后选择以下数据库查询构建功能标志之一
sqlx
diesel
如果您使用 sqlx
,您还必须选择以下运行时功能标志之一
runtime-async-std
runtime-tokio
示例
[dependencies]
database-schema = { version = "0.1", features = ["sqlite", "sqlx", "runtime-async-std"] }
或者,如果您使用 diesel
[dependencies]
database-schema = { version = "0.1", features = ["sqlite", "diesel"] }
宏
这个crate还提供了一组宏,可以在编译时生成数据库的SQL结构。这对于从 build.rs
生成SQL非常有用。
[dependencies]
database-schema = { version = "0.1", features = ["sqlite", "diesel", "macros"] }
use database_schema::generate_without_runtime;
let sql = generate_without_runtime!("./migrations", "structure.sql");
上述代码严格等同于调用
use database_schema::generate_without_runtime_using_defaults;
let sql = generate_without_runtime!();
定制
use database_schema::DatabaseSchemaBuilder;
let migrations_path = "db/migrations";
let destination_path = "db/structure.sql";
// This assumes you're using SQLite in memory.
//
// If you need to set up a `connection_url` you can use
// `DatabaseSchemaBuilder::connection_url` before calling
// `build()`.
DatabaseSchemaBuilder::new()
.migrations_dir(migrations_path)?
.destination_path(destination_path)
.build()
.dump()
.await
依赖
~2–21MB
~324K SLoC