38 个版本 (20 个稳定版)
4.0.1 | 2024年3月18日 |
---|---|
4.0.0-rc.2 | 2023年11月25日 |
3.3.0 | 2023年5月28日 |
3.2.0 | 2023年3月17日 |
0.4.0 | 2020年6月10日 |
#57 in 数据库接口
用于 2 crates
290KB
7.5K SLoC
Elephantry
Rust 遇到 PostgreSQL。
入门
快速概览
Elephantry 是一个专门针对 PostgreSQL 设计的 OMM(对象模型管理器),用于处理从简单到复杂的查询。
let database_url = std::env::var("DATABASE_URL")
.unwrap_or_else(|_| "postgres://127.0.0.1".to_string());
// Connect
let elephantry = elephantry::Pool::new(&database_url)?;
// Simple query
let rows = elephantry.execute("select id from entity")?;
for row in &rows {
let id: i32 = row.get("id");
println!("{id}");
}
// Define entity
#[derive(elephantry::Entity)]
#[elephantry(model = "Model", structure = "Structure")]
struct Entity {
#[elephantry(pk)]
id: u16,
deleted: bool,
}
// Read entities
let entity = elephantry.find_by_pk::<Model>(&elephantry::pk!(id))?;
let entities = elephantry.find_all::<Model>(None)?;
let entities = elephantry.find_where::<Model>("deleted = $1", &[&false], None)?;
// Write entities
elephantry.insert_one::<Model>(&entity)?;
elephantry.update_one::<Model>(&elephantry::pk!{id => entity.id}, &entity)?;
elephantry.delete_one::<Model>(&entity)?;
elephantry.delete_where::<Model>("deleted = $1", &[&true])?;
特性
all-types
— 启用所有类型特性(见下文);arbitrary
— 添加对 arbitrary crate 的支持;config
— 添加对 config 分层配置系统的支持;inspect
— 包含inspect
模块以检查数据库结构;pg14
— 启用 PostgreSQL 14 特性(多范围和新的TargetSessionAttrs
);r2d2
— 添加对 r2d2 通用连接池的支持;rocket
— 添加对 rocket 网络框架的支持;serde
— 添加通过 serde 进行序列化和反序列化的支持。
类型
bit
— 添加对 bit 类型的支持;date
— 添加对 date 类型的支持;geo
— 添加对 geometric 类型的支持;json
— 添加对 json 类型的支持;ltree
— 添加对 ltree 类型的支持;multirange
— 添加对 multirange 类型的支持(PostgreSQL >= 14);money
— 添加对 money 类型的支持;net
— 添加对 network 类型的支持;numeric
— 添加对 numeric 类型的支持;time
— 添加对 time 类型的支持;uuid
— 添加对 uuid 类型的支持;xml
— 添加对 xml 类型的支持。
使用 Elephantry 的项目
- todo — Todo 火箭示例应用;
- explain — 一个 CLI 工具,将 postgresql explain 转换为图形;
- sav — 一个简单的 CRUD 应用程序,用于存档购买的物品保修,用 rocket 构建;
- out of gafam — 使用 actix 生成 GAFAM(youtube、facebook、instagram 和 twitter)的 RSS 源;
- captainstat — 另一个简单的应用程序,使用 actix 构建,用于显示统计数据;
- oxfeed — 一个具有 actix API 和 yew 前端的 RSS 阅读器。
如果您想在这里添加您的项目,请 创建一个 pull request。
依赖关系
~4–39MB
~612K SLoC