Build Status

FlumeDB

The Sunrise Choir Flume is a re-write of the JavaScript flumedb into Rust with a new architecture for better performance and flexibility.

Architecture

Flume is a modular database:

In flume, each view remembers a version number, and if the version number changes, it just rebuilds the view. This means view code can be easily updated, or new views added. It just rebuilds the view on startup.

Example

```rust use flumedb::Error; use flumedb::OffsetLog;

fn main() -> Result<(), Error> { let path = shellexpand::tilde("~/.ssb/flume/log.offset"); let log = OffsetLog::::openreadonly(path.as_ref())?;

// Read the entry at offset 0
let r = log.read(0)?;
// `r.data` is a json string in a standard ssb log.
// `r.next` is the offset of the next entry.
let r = log.read(r.next);

log.iter()
.map(|e| serde_json::from_slice::<serde_json::Value>(&e.data).unwrap())
.for_each(|v| println!("{}", serde_json::to_string_pretty(&v).unwrap()));

Ok(())

} ```