#postgresql #sql #编译时 #查询 #写入 #已检查 #如何

sqlm-postgres

sql! 宏,用于编写类似于 format! 的编译时检查数据库查询

1 个不稳定版本

0.1.0 2024年6月7日

#1354数据库接口

MIT/Apache

46KB
981 行(不包括注释)

一个 sql! 宏,用于编写类似于 format! 的编译时检查数据库查询。

示例

use sqlm_postgres::{sql, Enum, FromRow, FromSql, ToSql};

let id: i64 = 1;
let user: User = sql!("SELECT * FROM users WHERE id = {id}").await?;

#[derive(Debug, FromRow)]
struct User {
    id: i64,
    name: String,
    role: Role,
}

#[derive(Debug, Default, FromSql, ToSql, Enum)]
#[postgres(name = "role")]
enum Role {
    #[default]
    #[postgres(name = "user")]
    User,
    #[postgres(name = "admin")]
    Admin,
}

用法

  • sqlm-postgres 添加到您的依赖项中
  • 在编译时使 DATABASE_URL 环境变量可用(例如,通过添加一个 .env 文件)
  • 开始使用 sql! 宏(无需进一步设置;自动为您创建连接池)

注意事项

  • 自动为您创建全局连接池,无法选择不创建
  • 编译时检查无法禁用。因此,在您的CI上也需要数据库访问。
  • 不知道Postgres返回的行是否可为空,因此需要所有类型实现 Default::default,如果Postgres返回null,则回退到它。

依赖项

~21–31MB
~583K SLoC