#sql-query #sql #inline #postgresql

inline-sql

直接在Rust函数中编写SQL查询

2个不稳定版本

0.2.0 2024年3月10日
0.1.4 2024年3月6日

#2011 in 数据库接口

Download history 11/week @ 2024-06-22 52/week @ 2024-07-27

每月52次下载

BSD-2-Clause

15KB
94

inline-sql

在Rust函数内部编写SQL查询。

inline-sql crate 允许您注释一个函数,直接将SQL查询作为函数体编写。您可以使用函数参数作为查询中的占位符,查询结果将自动转换为返回类型。

有关更多详细信息和使用示例,请参阅 #[inline_sql] 宏的文档。

目前,仅支持 tokio-postgres 作为后端。

示例:返回一个 Vec 行向量。

use inline_sql::inline_sql;

#[inline_sql]
async fn get_pets_by_species(
  client: &tokio_postgres::Client,
  species: &str,
) -> Result<Vec<Pet>, tokio_postgres::Error> {
    query!(SELECT * FROM pets WHERE species = $species)
}

计划功能

  • 支持更多后端,包括同步后端。
  • 解析函数参数以确定 client 对象的名称。
  • 支持返回恰好一行或错误的查询。
  • 更多属性参数以允许
    • 指定查询类型而不是从返回类型推断。
    • 更改在生成的代码中获取 client 的方式(例如,从 self 的成员)。

依赖关系

~7–17MB
~228K SLoC