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数据库接口

Download history 144/week @ 2024-07-19 219/week @ 2024-07-26 4/week @ 2024-08-02

每月 367 次下载

MIT 许可证

47KB
976

rust_orm_gen

Rust PostgreSQL License: MIT GitHub issues GitHub stars ReadMe Read the Docs

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 凭据和数据库名称。

使用方法

  1. 初始化数据库上下文
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(())
}

  1. 运行程序
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