25 个版本 (8 个破坏性版本)
0.9.0 | 2022 年 11 月 7 日 |
---|---|
0.7.4 | 2022 年 5 月 6 日 |
#2653 在 数据库接口
每月 1,560 次下载
115KB
3K SLoC
康诺科皮亚
康诺科皮亚是一个由 rust-postgres
驱动的工具,旨在从您的 PostgreSQL 查询中生成类型检查的 Rust 接口。它通过针对实际数据库准备您的查询,然后对它们运行广泛的验证套件来实现。一旦查询被准备和验证,就会生成 Rust 代码到一个模块中,该模块可以导入并在您的项目中使用。
基本原理是
- 编写您的 PostgreSQL 查询。
- 使用康诺科皮亚生成 Rust 代码。
- 在您的项目中使用生成的代码。
与其他 Rust 数据库接口相比,康诺科皮亚的方法在易于理解的同时,还生成了既方便使用又没有复杂宏或通用型的代码。由于康诺科皮亚生成的是纯 Rust 结构体,因此您还可以轻松地构建生成的项。
以下是其一些定义性功能
- 以 SQL 为先。您的 SQL 是唯一的事实来源。没有复杂的 ORM。
- 强大的查询验证。在运行时之前捕获错误,具有强大(且美观)的诊断。
- 支持自定义用户类型(复合类型、域和枚举)和一维数组。
- 同步和异步驱动程序支持,可选的连接池。
- 高效的非分配行映射。
- 精细的类型空值控制。
- 作为库和 CLI 提供使用。
- 尽可能接近原生
rust-postgres
性能。
您可以通过阅读我们的 书籍 了解更多关于使用康诺科皮亚的信息,或者您可以通过查看我们的 示例 获取快速入门。
康诺科皮亚的快速尝鲜
本书籍是获取更深入解释的地方,但这里有一个非常简单的示例,以便您有一个大概的了解。
假设您有以下PostgreSQL查询
-- queries/some_query_file.sql
--! authors
SELECT first_name, last_name, country FROM Authors;
--! insert_author
INSERT INTO Authors(first_name, last_name, country)
VALUES (:first_name, :last_name, :country)
注意查询注释(--! authors
,--! insert_authors
)和命名绑定参数(:first_name
等)。
然后,使用Cornucopia的CLI生成Rust代码后,您可以将它导入到项目中,如下所示
mod cornucopia;
use cornucopia::{authors, insert_author};
下面是这些查询的一个示例用法
insert_author.bind(&client, "Agatha", "Christie", "England");
let all_authors = authors().bind(&client).all();
for author in all_authors {
println!("[{}] {}, {}",
author.country,
author.last_name.to_uppercase(),
author.first_name
)
}
您可以使用Cornucopia轻松自定义查询的几乎所有方面(自定义参数和行结构体,重命名,空值控制等),所以如果您想了解更多,请访问本书。
MSRV
此crate使用Rust 2021版,至少需要版本1.62.1。
许可证
根据以下任一项获得许可
- Apache License,版本2.0(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT),任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,包括在本作品中包含的,都应作为上述双重许可,不附加任何额外条款或条件。
依赖项
~12–23MB
~345K SLoC