arangodb_events_rs

Crates.ioarangodb_events_rs
lib.rsarangodb_events_rs
version0.1.6
sourcesrc
created_at2022-08-12 08:54:46.269498
updated_at2022-08-16 19:51:19.545539
descriptionSubscribe to real time events on your ArangoDB database in Rust
homepage
repositoryhttps://github.com/ForetagInc/arangodb-events-rs
max_upload_size
id643879
size58,490
Chiru B (itsezc)

documentation

README

ArangoDB Events

A library to add triggers to your ArangoDB database, when events occur (insert, update, delete etc.) on your collections.

crates.io Downloads Build Documentation

Documentation

Features

  • async Enables asynchronous Handler::call method

Installation

Add the crate to your Cargo.toml:

arangodb_events_rs = "0.1.6"

Usage

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(
        "http://localhost: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");
    }
}
Commit count: 67

cargo fmt