#reflection #maria-db #mysql #database-table #sqlx

database-reflection

数据库反射库。目前仅支持 MariaDB 和 MySQL 的 InnoDB 引擎。

5 个版本

0.1.4 2024 年 7 月 31 日
0.1.3 2024 年 2 月 24 日
0.1.2 2024 年 1 月 19 日
0.1.1 2024 年 1 月 13 日
0.1.0 2024 年 1 月 7 日

#1108数据库接口

Download history 6/week @ 2024-06-03 1/week @ 2024-07-22 144/week @ 2024-07-29

145 每月下载量
用于 ctgen

MIT 许可证

51KB
1K SLoC

Crates.io API dependency status build and test codecov

database-reflection

Rust 结构体和特质的集合,用于构建高级数据库反射。
目前处于开发中。可能存在破坏性更改和文档问题。

目前库只支持 MariaDB 的 InnoDB 表引擎。
理论上可以与 MySQL 和 InnoDB 一起工作,但截至编写时尚未确认。

使用风险自负。仍在开发中。

快速入门

手动构建

查看测试文件 integration.rs 了解如何手动构建。

    use database_reflection::reflection::Database;

    let db_name = "test"; 
    let mut db = Database::new(db_name);

    // and so on...

使用反射适配器

如果您的数据库设计符合本库期望的约定,您可能希望能够使用提供的 MariaDB 反射适配器构建反射。
注意:这需要启用 mariadb 功能。

    use database_reflection::adapter::mariadb_innodb::MariadbInnodbReflectionAdapter;
    use database_reflection::adapter::reflection_adapter::{ReflectionAdapter, ReflectionAdapterUninitialized};
    use database_reflection::reflection::{Column, Constraint, Database, DefaultValue, Index, SqlDatatype, Table};

    dotenvy::dotenv()?;
    let connection_str = env::var("DB_CONNECTION")?;
    let reflection = MariadbInnodbReflectionAdapter::new(&connection_str).connect().await?.get_reflection().await?;

注意: connection_str 是标准的 DSN。

许可证

此库(database-reflection)在 MIT 许可证下开源。

依赖

~8–19MB
~286K SLoC