18 个版本

0.2.1 2023年1月30日
0.2.0-beta.92022年12月25日
0.2.0-beta.82022年11月8日
0.0.0 2022年5月10日

#1426数据库接口

MIT 许可证

170KB
1.5K SLoC

Teil,Postgres/Sqlite 的基本数据映射器

Teil (发音为 /tail/) 是一个库,旨在尽可能简化与 postgres (或 sqlite) 的连接(并带有此含义的限制)。 Teil 在德语中意为 部分份额

use teil::{Teil, fields::Serial};

#[derive(Teil, Debug)]
struct Account {
    #[teil(auto, primary_key)]
    id: Serial,
    #[teil(unique)]
    owner: String,
    #[teil(rename = "account_balance")]
    balance: f64
}

teil::config()
    .user("example")
    .password("password")
    .dbname("example_db")
    .host("127.0.0.1")
    .port(5432)
    .set().unwrap();

teil::create!(Account);

(Account {id: Serial::new(), owner: "Carlos".into(), balance: 420.00}).save().await.unwrap();
let account = Account::retrieve(1).await.unwrap();
println!("{:?}", account);

teil::destroy!(Account);

此 crate 可用的功能

  • sync:启用库的同步版本的使用(即,SyncTeilSyncFilter 特性和 derive 宏)
  • iter:允许使用基于事务的多次保存功能(请参阅 save_itersave_iter 的同步版本)
  • chrono:允许将一些 chrono 字段用作 Teil-deriving 结构的字段。有关更多信息,请参阅 TeilFieldSyncTeilField
  • partial:启用数据库表中行的部分更新字段。有关更多信息,请参阅 update 方法(或同步版本,update
  • uuid:允许使用 derive 宏与 Uuid 类型
  • serde:在使用 derive 宏时实现了 SerializeDeserialize 对于 SerialBigSerialSmallSerialUpdate 相关类型
  • fs:通过辅助元数据表,启用一些文件系统管理功能以在本地存储文件

依赖项

~7–20MB
~305K SLoC