3个版本
0.1.2 | 2019年8月8日 |
---|---|
0.1.1 | 2019年5月10日 |
0.1.0 | 2019年2月8日 |
在 数据库接口 中排名第2385
每月下载量27次
11KB
142 行
Actix Diesel Actor
将diesel查询打包到actix消息中
提供消息类型,用于将diesel查询打包到actix消息中。提供actor来处理这些消息并执行查询。
SQuery消息可用于任何完整的diesel查询,并实现了diesel SelectQuery。当你的应用需要对数据库的只读副本进行读取操作时,这很有用。WQuery除了SELECT之外,还接受INSERT、UPDATE、DELETE等写操作。这可以用于通用目的或当你的数据库集群有许多副本和一个可写的master数据库时。
数据库连接可以通过环境变量进行配置,因此你可以从你的集群配置工具(如Kubernetes)将数据库连接传递到应用程序。
目前它只支持PostgreSQL。
用法
创建actix-web应用的辅助工具
pub use actix_diesel_actor as db;
let sys = actix::System::new("my_actix_sys");
let raddr = db::db_setup(db::ConnectionType::Read);
let waddr = db::db_setup(db::ConnectionType::Write);
// routes need to be defined in a most specific to least specific order
server::new(move || {
vec![
App::with_state(db::AppState{rdb: raddr.clone(), wdb: waddr.clone()})
...
]
})
.bind(bind_url)
.unwrap()
.run();
let _ = sys.run();
在处理程序中使用它
pub fn index(req: &HttpRequest<AppState>) -> Result<HttpResponse, crate::db::DbExecutorError> {
let query = users.filter(user_id.is_not_null());
let select = SQuery{ select: query, phantom: PhantomData::<User> };
let usr_list = req.state().rdb.send(select)
.wait()??;
println!("{:?}",usr_list);
Ok(HttpResponse::Found().finish())
}
许可证
根据以下之一许可
- Apache License,版本2.0,(LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
贡献
除非你明确表示,否则任何你故意提交以包含在作品中的贡献,如Apache-2.0许可证中定义的,应如上所述双许可,不附加任何额外的条款或条件。
依赖关系
~13–19MB
~254K SLoC