bankai/aarondb_bridge
aarondb_bridge — loads bankai’s content-addressed task state into an aarondb Datalog Db and runs queries over it.
Two load modes:
- db_from_tasks: one entity per task id (current-state point lookups + status/cycle-time analytics).
- db_from_versions: one entity per content_hash version (temporal/history queries — every version carries task_id + updated_at).
Values
pub fn count_by_status(
db: process.Subject(transactor.Message),
) -> dict.Dict(String, Int)
Count tasks by status. Requires a db_from_tasks Db.
pub fn cycle_times(
db: process.Subject(transactor.Message),
) -> List(Int)
Cycle times (updated_at - created_at) for completed/closed tasks. Requires a db_from_tasks Db.
pub fn db_from_tasks(
tasks: List(types.Task),
) -> Result(process.Subject(transactor.Message), String)
A fresh in-memory aarondb Db with the given bankai tasks loaded as EAV facts.
pub fn db_from_versions(
versions: List(types.Task),
) -> Result(process.Subject(transactor.Message), String)
Load ALL task versions as per-version EAV entities (entity = content_hash). Each version carries task_id + updated_at, so temporal queries run across the full version graph (store.list() is the feed).
pub fn get_task_attr(
db: process.Subject(transactor.Message),
task_id: String,
attr: String,
) -> Result(fact.Value, Nil)
Look up a single attribute of a task by id.
pub fn history_timeline(
db: process.Subject(transactor.Message),
task_id: String,
) -> List(#(Int, String))
Status timeline for a task: List(#(updated_at, status)), ascending by time. Requires a db_from_versions Db.
pub fn load_tasks(
db: process.Subject(transactor.Message),
tasks: List(types.Task),
) -> Result(Nil, String)
Transact bankai tasks into an aarondb Db. Idempotent: entities are addressed by task id, so re-transacting the same task is a no-op.
pub fn load_versions(
db: process.Subject(transactor.Message),
versions: List(types.Task),
) -> Result(Nil, String)