image:[License,link="https://github.com/hyperpolymath/palimpsest-license"]
BEAM (Erlang/Gleam/Elixir) bindings for FormDB - the narrative-first database.
FormDB BEAM provides native bindings to FormDB for the BEAM ecosystem:
-
Gleam - Type-safe functional interface
-
Erlang - Low-level NIF bindings
-
Elixir - (Coming soon)
All data is passed as CBOR-encoded binaries for maximum efficiency.
import formdb_beam/client
pub fn main() {
// Connect to database
let assert Ok(conn) = client.connect("/path/to/db")
// Get version
let #(major, minor, patch) = client.version()
io.println("FormDB v" <> int.to_string(major) <> "." <> int.to_string(minor))
// Execute in transaction
let assert Ok(result) = client.with_transaction(conn, client.ReadWrite, fn(txn) {
// Your operations here
client.apply_operation(txn, cbor_encoded_op)
})
// Close connection
let assert Ok(_) = client.disconnect(conn)
}% Open database
{ok, Db} = formdb_nif:db_open(<<"/path/to/db">>),
% Begin transaction
{ok, Txn} = formdb_nif:txn_begin(Db, read_write),
% Apply operation (CBOR-encoded)
{ok, ResultCbor, ProvenanceCbor} = formdb_nif:apply(Txn, OperationCbor),
% Commit
ok = formdb_nif:txn_commit(Txn),
% Close
ok = formdb_nif:db_close(Db).| Function | Description |
|---|---|
|
Get FormDB version as |
|
Open database at path |
|
Close database connection |
|
Start transaction (ReadOnly or ReadWrite) |
|
Commit transaction |
|
Abort transaction |
|
Apply CBOR-encoded operation |
|
Get database schema (CBOR) |
|
Get journal entries since sequence |
|
Execute with automatic commit/abort |
| Function | Description |
|---|---|
|
Get version as |
|
Open database (binary path) |
|
Close database |
|
Begin transaction with mode atom |
|
Commit transaction |
|
Abort transaction |
|
Apply CBOR operation |
|
Get schema |
|
Get journal since sequence |
┌─────────────────────────────────────┐ │ Gleam Application │ │ (formdb_beam/client) │ ├─────────────────────────────────────┤ │ Erlang NIF Module │ │ (formdb_nif.erl) │ ├─────────────────────────────────────┤ │ Zig NIF Implementation │ │ (formdb_nif.zig) │ ├─────────────────────────────────────┤ │ FormDB C ABI │ │ (bridge.zig) │ ├─────────────────────────────────────┤ │ FormDB Core │ │ (Forth/Factor) │ └─────────────────────────────────────┘