4个版本
0.2.1 | 2023年7月5日 |
---|---|
0.2.0 | 2023年2月4日 |
0.1.1 | 2021年1月18日 |
0.1.0 | 2021年1月17日 |
#528 in 编码
2,348 每月下载
用于 2 个crate(通过 warg-server)
9KB
107 行
diesel_json
提供了一种包装类型 diesel_json::Json
,可以直接用于包装serde可序列化和反序列化的结构,并识别它们为可查询、可插入的JsonB字段。
入门
将diesel_json依赖项添加到Cargo.toml。
- Diesel 2.0支持:
diesel_json = "0.2"
- Diesel 1.4支持:
diesel_json = "0.1"
将数据结构包装到 diesel_json::Json
类型。
#[derive(Serialize, Deserialize, Debug)]
struct ComplexStruct {
// ...
}
use diesel_json::Json;
#[derive(Serialize, Deserialize, Queryable, Insertable, AsChangeset, Identifiable)]
struct ExampleTable {
// ...
// Field that will be stored in Jsonb format
jsonb_field: diesel_json::Json<ComplexStruct>,
// Or simply as
jsonb_field2: Json<ComplexStruct>,
// ...
}
Json
类型提供了用于对象初始化的 new
函数,实现了 Deref
、DerefMut
、AsRef
、AsMut
等其他特质,这些特质将数据访问直接映射到底层数据。
参见 tests/postgresql.rs
以获取示例使用方法。
为什么我应该使用这个库?
没有为每个作为JsonB字段存储的唯一类型提供包装类型,您将需要直接使用 serde_json::Value
或实现自己的实现来遵循以下特质
impl<T> FromSql<sql_types::JsonB, Pg> for Json<T> {}
impl<T> ToSql<sql_types::JsonB, Pg> for Json<T> {}
待办事项
- 不仅支持JsonB,还支持Json PostgreSQL类型
- 支持更多数据库驱动程序
- PostgreSQL
- MySql
- SQLite
- 改进库的测试
- 测试可空/非可空JsonB PostgreSQL字段的插入和检索。
- 添加支持并测试Json字段的插入和检索
- 待办事项(扩展):添加对其他数据库驱动程序Json字段的支持
依赖关系
~4MB
~84K SLoC