3 个版本
0.1.6 | 2022年8月16日 |
---|---|
0.1.5 | 2022年8月15日 |
0.1.4 | 2022年8月12日 |
#1751 在 数据库接口
42KB
664 行
ArangoDB Events
一个库,可以将触发器添加到您的 ArangoDB 数据库,当您的集合上发生事件(插入、更新、删除等)时。
文档
功能
async
启用异步Handler::call
方法
安装
将 crate 添加到您的 Cargo.toml
arangodb_events_rs = "0.1.6"
用法
use arangodb_events_rs::api::DocumentOperation;
use arangodb_events_rs::{Handler, Trigger, HandlerContextFactory};
pub struct GlobalHandler;
pub struct GlobalHandlerContext {
pub data: u8,
}
impl Handler for GlobalHandler {
type Context = GlobalHandlerContext;
fn call(ctx: &GlobalHandlerContext, doc: &DocumentOperation) {
println!("{}", ctx.data); // 10
}
}
#[tokio::main]
async fn main() {
let mut trigger = Trigger::new_auth(
"https://127.0.0.1:8529/",
"database",
TriggerAuthentication::new("user", "password"),
);
trigger.subscribe::<GlobalHandler>(
HandlerEvent::InsertOrReplace,
HandlerContextFactory::from(GlobalHandlerContext {
data: 10,
})
); // This subscribes for all Insert or Replace operations on the database
trigger.subscribe_to::<AccountHandler>(
HandlerEvent::Remove,
"accounts",
HandlerContextFactory::from(AccountHandlerContext {
data: 50,
})
); // This is gonna listen only for Remove operations over accounts table
trigger
.init()
.await
.expect("Error initializing ArangoDB Trigger");
loop {
trigger
.listen()
.await
.expect("Error on Trigger listener loop");
}
}
依赖项
~7–20MB
~232K SLoC