4 个版本
0.1.3 | 2024 年 7 月 26 日 |
---|---|
0.1.2 | 2024 年 7 月 26 日 |
0.1.1 | 2024 年 7 月 25 日 |
0.1.0 | 2024 年 7 月 24 日 |
#1854 在 数据库接口
每月 367 次下载
47KB
976 行
rust_orm_gen
rust_orm_gen 是一个 Rust 库,用于逆向工程 PostgreSQL 数据库并自动生成 Rust 结构体、CRUD 操作以及管理数据库迁移。此工具简化了在 Rust 中与 PostgreSQL 数据库交互的过程,确保您的代码干净、可维护且高效。
功能
- 逆向工程 PostgreSQL 数据库。
- 自动生成 Rust 结构体。
- 为每个表创建 CRUD 操作。
- 处理数据库迁移和模式更改。
- 定义和验证表之间的关系。
- 以编程方式构建和执行复杂 SQL 查询。
- 验证数据模型与数据库约束。
安装
要安装 rust_orm_gen,请将其添加到您的 Rust 项目中,修改您的 Cargo.toml
文件
[dependencies]
rust_orm_gen = { git = "https://github.com/tomblanchard312/rust_orm_gen.git" }
tokio = { version = "1", features = ["full"] }
dotenv = "0.15.0"
## Configuration
Ensure your .env file is correctly configured with the database URL:
```text
DATABASE_URL=postgres://user:password@localhost/mydb
将用户、密码和 mydb 替换为您实际的 PostgreSQL 凭据和数据库名称。
使用方法
- 初始化数据库上下文
mod context;
mod metadata;
mod generator;
mod crud;
mod db;
mod migrations;
mod relationships;
mod query_builder;
mod validation;
use crate::context::DbContext;
use dotenv::dotenv;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv().ok();
let database_url = env::var("DATABASE_URL")?;
let db_context = DbContext::new(&database_url).await?;
db_context.reverse_engineer("db").await?;
Ok(())
}
- 运行程序
cargo run
将程序作为 crate 包含在您的代码中
在您的 Cargo.toml 文件中添加以下内容
[dependencies]
rust_orm_gen = "0.1.0"
在您的 .env 文件中添加对 Postgresql 数据库的连接
DATABASE_URL=postgres://postgres:yourpassword@localhost/yourdatabase
要在您的代码中使用库,在 main.rs 文件中导入库
mod db {
pub mod users;
pub mod users_crud;
}
use db::users::Users;
use db::users_crud::{create_users, get_users, update_users, delete_users};
use tokio_postgres::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv().ok();
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
let (client, connection) = tokio_postgres::connect(database_url, tokio_postgres::NoTls).await?;
tokio::spawn(async move {
if let Err(e) = connection.await {
eprintln!("connection error: {}", e);
}
});
// Example usage of generated ORM code
let new_user = Users {
id: 1,
first_name: "John".to_string(),
last_name: "Doe".to_string(),
};
let created_user = create_users(&client, &new_user).await?;
println!("Created user: {:?}", created_user);
let fetched_user = get_users(&client, 1).await?;
println!("Fetched user: {:?}", fetched_user);
Ok(())
}
文档
有关 rust_orm_gen 的详细文档可以在项目根目录的文档文件夹中找到。主要文档文件名为 "rust_orm_gen_documentation.pdf"。
版本 0.1.2 的变更:增加了更好的错误处理和从命令行调用的功能,以便与 VSCode 扩展集成。版本 0.1.2:引入了处理数据库迁移、关系和复杂查询构建的功能。
示例代码
rust_orm_gen "postgres://postgres:password@localhost:5432/yourdb" "C:\GitProjects\rust\rustsample\db"
此示例将输出所有数据库结构体和方法到项目中的 db 文件夹。
依赖关系
~12–24MB
~363K SLoC