2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2017年12月12日 |
---|---|
0.1.0 | 2017年12月12日 |
#2683 in 数据库接口
19KB
273 行
Postgres Hstore for Diesel
此 crate 为 Diesel 和 Postgres 提供了 Hstore 类型。
目前仅支持将数据序列化和反序列化为 hstore 列。如果有人有兴趣构建对 Postgres hstore 查询语法 的支持,将非常感谢!
使用方法
有关更多详细信息,请参阅 文档。
将 diesel_pg_hstore 添加到您的 Cargo.toml
[dependencies]
diesel_pg_hstore = "*"
将 crate 添加到您的项目。 (例如,从您的 lib.rs
文件)
extern diesel_pg_hstore;
使用 Diesel 的 Hstore 类型
该类型必须存在于您模式定义的 table!
定义中。目前没有简单的方法可以提供这一点,除非您手动将其添加到每个需要该类型的 table!
。
一旦 Diesel 1.0 版本退出测试阶段,Diesel 将提供 diesel print-schema
命令和 infer_schema!
宏将外部类型引入作用域的能力。目前,我建议不要使用 infer_schema!
宏。
如果您正在使用 diesel print-schema
命令来重新生成您的模式,您可以考虑创建一个包含所需 use diesel_pg_hstore::Hstore;
语句的 .patch 文件,以将 Hstore
类型引入作用域。
使用 Hstore
#[macro_use] extern crate diesel;
extern crate diesel_pg_hstore;
use std::collections::HashMap;
use diesel::prelude::*;
use diesel_pg_hstore::Hstore;
table! {
use diesel::types::*;
use diesel_pg_hstore::Hstore;
user_profile {
id -> Integer,
settings -> Hstore,
}
}
#[derive(Insertable, Debug, PartialEq)]
#[table_name="user_profile"]
struct NewUserProfile {
settings: Hstore,
}
fn main() {
let mut settings = HashMap::new();
settings.insert("Hello".to_string(), "World".to_string());
let profile = NewUserProfile { settings: Hstore::from_hashmap(settings) };
}
为了方便起见,Hstore 类型还提供了对标准 HashMap
函数的代理方法。
许可证
diesel_pg_hstore 许可证为以下之一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确表示,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,均将根据上述方式双许可,不附加任何额外条款或条件。
有关更多信息,请参阅 贡献 文件。
依赖
~4MB
~91K SLoC