batpak 0.5.0

Event sourcing with causal graphs and policy gates. Sync API, zero async.
Documentation
use batpak::prelude::*;

#[allow(clippy::print_stdout)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let dir = tempfile::tempdir()?;
    let store = Store::open(StoreConfig::new(dir.path()))?;
    let kind = EventKind::custom(0xF, 3);

    let mut outbox = store.outbox();
    outbox.stage(
        Coordinate::new("player:outbox", "room:batch")?,
        kind,
        &serde_json::json!({"n": 1}),
    )?;
    outbox.stage(
        Coordinate::new("player:outbox", "room:batch")?,
        kind,
        &serde_json::json!({"n": 2}),
    )?;
    outbox.stage(
        Coordinate::new("player:outbox", "room:batch")?,
        kind,
        &serde_json::json!({"n": 3}),
    )?;

    let receipts = outbox.flush()?;
    println!(
        "flushed {} staged events through one batch path",
        receipts.len()
    );

    store.close()?;
    Ok(())
}