3个不稳定版本
0.3.0 |
|
---|---|
0.2.1 | 2024年6月23日 |
0.2.0 | 2023年12月7日 |
0.1.0 | 2023年12月7日 |
在数据库接口中排名第2817
21KB
94 行
PRQLX
将PRQL查询语言与SQLX宏功能相结合。
PRQL是一个令人惊叹的SQL DSL,但在SQLX中没有原生支持。这个crate通过在发送到SQLX(以及您的数据库)之前在Rust宏中编译PRQL来弥合这个差距。这意味着您可以使用PRQL语法与
- 所有支持的SQLX数据库
- 友好的编译器错误
- 完全类型化的Rust
使用方法
cargo add prqlx
cargo add sqlx # requires sqlx to be installed by you so you can configure it correctly
use prqlx::{query, query_as};
async fn test_query() {
// get your sqlx pool in whatever way
let pool = get_database_pool().await;
// simply use it like a regular sqlx query, except you now use PRQL!
let val = query!(
"
from users
select { id, name }
"
)
.fetch_all(&pool)
.await
.unwrap();
// Same thing with query_as!
// Bindings also just work:tm:
let val2 = query_as!(
User,
"
from users
select { id, name }
filter id == $1
",
123
)
.fetch_one(&pool)
.await
.unwrap();
println!("{:?}", val2);
}
注意事项
PRQL不原生支持?
用于绑定。您将不得不使用s"?"
来处理。绑定时最好使用${num}
。
待办事项
并非所有宏都已被实现。目前只有query
和query_as
。如果您想添加其他宏,请提交问题(或提交PR)!
测试/贡献
在运行cargo test
之前,必须首先设置数据库。要这样做,请运行cargo run --example prepare
以准备SQLite数据库。之后,您可以像平常一样进行开发。
依赖
~9–21MB
~256K SLoC