16 个版本
0.0.17 |
|
---|---|
0.0.17-beta |
|
0.0.16 | 2023 年 8 月 20 日 |
0.0.14 | 2023 年 7 月 15 日 |
0.0.3 | 2022 年 10 月 28 日 |
#68 in FFI
314 每月下载量
105KB
2.5K SLoC
dsync
一个用于从 diesel 模式文件生成数据库结构和查询代码的工具。主要用于 create-rust-app。
目前,生成代码比使用宏推导代码更有优势,因为当涉及到宏展开时,智能感应和自动完成功能还不完善。
演示
给定以下模式
// schema.rs
diesel::table! {
todos (id) {
id -> Int4,
text -> Text,
completed -> Bool,
}
}
我们运行
cargo dsync -i schema.rs -o models
现在我们拥有了所需的一切!
use models::todos;
async fn demo(db: Connection) {
let created_todo = todos::create(&mut db, todos::CreateTodo {
text: "Create a demo",
completed: false,
}).await?;
let todos_list = todos::paginate(&mut db, 1, 10).await?;
let updated_todo = todos::update(&mut db, created_todo.id, UpdateTodo {
text: created_todo.text,
completed: true,
}).await?;
}
有关完整示例,请参阅 test/simple_table/schema.rs
,它生成了 test/simple_schema/models
中的所有代码。
用法
-
添加此crate
cargo add dsync
-
在您的项目中创建一个新的二进制文件,该文件使用此crate(例如,
bin/dsync.rs
)use std::{collections::HashMap, path::PathBuf}; use dsync::{GenerationConfig, TableOptions}; pub fn main() { let dir = env!("CARGO_MANIFEST_DIR"); dsync::generate_files( PathBuf::from_iter([dir, "src/schema.rs"]), PathBuf::from_iter([dir, "src/models"]), GenerationConfig { /* ... your generation options ... */ } ); }
-
创建一个
Cargo.toml
二进制条目[[bin]] name = "dsync" path = "bin/dsync.rs"
-
执行!
cargo run --bin dsync
提示:要使用 cargo dsync
,请在 .cargo/config
中创建别名
[alias]
dsync="run --bin dsync"
预构建二进制文件
设置自定义二进制文件可以使您完全自定义生成;但是,如果不需要完全自定义,您可以直接安装 CLI(您需要通过定期运行此命令来确保它保持最新状态)
cargo install dsync
CLI 使用方法
-
:输入参数:模式文件路径-
:输出参数:生成代码应写入的目录路径-c
:连接类型(例如:diesel::r2d2::PooledConnection<diesel::r2d2::ConnectionManager<diesel::PgConnection>>
)-g
:(可选) 自动由创建/更新触发器生成的列列表(例如,created_at
,updated_at
)--tsync
:(可选) 向生成的结构体添加 #[tsync] 属性(见 https://github.com/Wulf/tsync)--model-path
:(可选) 设置自定义模型导入路径,默认crate::models::
--schema-path
:(可选) 设置自定义模式导入路径,默认crate::schema::
--no-serde
:(可选) 如果设置,则不输出任何 serde 相关代码- 注意:CLI 有防止意外覆盖文件的故障安全措施
dsync -i src/schema.rs -o src/models
文档
请参阅 dsync --help
获取更多信息。
欢迎提交支持或功能请求的工单。
开发/测试
使用 ./test/test_all.sh
运行测试。运行测试后,./test
中的文件不应有任何意外更改(使用 git status
和 git diff
查看是否有更改)。
许可
此工具在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。
请参阅 LICENSE-APACHE、LICENSE-MIT 和 COPYRIGHT 以获取详细信息。
依赖项
~3MB
~56K SLoC