View Source Baobab (Baobab v0.30.0)

Baobab is an Elixir implementation of the Bamboo append-only log.

It is fairly opinionated about the DETS persistence of the logs. They are considered to be a spool of the logs as retreived.

Consumers of this library may wish to place a local copy of the logs in a store with better indexing and query properties.

Configuration

config :baobab, spool_dir: "/tmp"

Options

  • format: :entry or :binary, default: :entry
  • log_id: the author's log identifier, default 0
  • clump_id: the bamboo clump with which associated, default: "default"
  • revalidate: confirm the store contents are unchanged, default: false
  • replace: rewrite log contents even if it exists, default: false

Summary

Functions

A list of all {author, log_id, seqnum} tuples in the configured store

Retrieve the list of sequence numbers on a particular log identified by the author key and log number

Create and store a new log entry for a stored identity

Retrieve a list of all available clumps

Compact log contents to only items in the certificate pool for the latest entry. This allows validation while reducing space used

Create a clump

Drop a clump

Retrieve all available entries in a particular log

Retrieve an author log at a particular sequence number. Includes the available certificate pool for its verification.

Retreive a paticular entry by author and sequence number.

Retrieve all available author log entries over a specified range: {first, last}.

Retrieve the latest sequence number on a particular log identified by the author key and log number

Purges a given log.

A list of {author, log_id, max_seqnum} tuples in the configured store

Functions

Link to this function

all_entries(clump_id \\ "default")

View Source

A list of all {author, log_id, seqnum} tuples in the configured store

Link to this function

all_seqnum(author, options \\ [])

View Source

Retrieve the list of sequence numbers on a particular log identified by the author key and log number

Link to this function

append_log(payload, identity, options \\ [])

View Source

Create and store a new log entry for a stored identity

Retrieve a list of all available clumps

Link to this function

compact(author, options \\ [])

View Source

Compact log contents to only items in the certificate pool for the latest entry. This allows validation while reducing space used

Create a clump

Drop a clump

Link to this function

full_log(author, options \\ [])

View Source

Retrieve all available entries in a particular log

Link to this function

log_at(author, seqnum, options \\ [])

View Source

Retrieve an author log at a particular sequence number. Includes the available certificate pool for its verification.

Using :max as the sequence number will use the latest

Link to this function

log_entry(author, seqnum, options \\ [])

View Source

Retreive a paticular entry by author and sequence number.

:max for the sequence number retrieves the latest known entry

Link to this function

log_range(author, range, options \\ [])

View Source

Retrieve all available author log entries over a specified range: {first, last}.

Link to this function

max_seqnum(author, options \\ [])

View Source

Retrieve the latest sequence number on a particular log identified by the author key and log number

Link to this function

optvals(opts, list, acc)

View Source
Link to this function

purge(author, options \\ [])

View Source

Purges a given log.

:all may be specified for author and/or the log_id option. Specifying both effectively clears the entire store.

Returns stored_info/0

Examples

iex> Baobab.purge(:all, log_id: :all) []

Link to this function

stored_info(clump_id \\ "default")

View Source

A list of {author, log_id, max_seqnum} tuples in the configured store