Packages
An idiomatic Elixir client for TerminusDB, the version-controlled document graph database. Features DB management, document CRUD with streaming, schema frames, branching, diff/merge, a ~100-operator WOQL DSL, GraphQL, and telemetry. Built on Req with immutable configs and typed errors.
Current section
Files
Jump to
Current section
Files
lib/terminus_db.ex
defmodule TerminusDB do
@moduledoc """
An idiomatic Elixir client for [TerminusDB](https://terminusdb.org), the document
graph database with built-in version control.
v0.1 provides the foundation: an immutable `TerminusDB.Config` for connection
context, a Req-based `TerminusDB.Client` HTTP layer, a typed `TerminusDB.Error`,
the `TerminusDB.Database` management API, and `TerminusDB.Telemetry` events on
every operation. Connection context is **immutable data**, making it safe for
concurrent use.
Document, schema, branch, commit, diff, merge, WOQL, GraphQL, and streaming
APIs, plus optional Ecto and ExDatalog integrations, are planned for later
milestones. See `ARCHITECTURE.md` and the ADRs (under `docs/adr/`) for the full
design and roadmap.
## Quick start
# 1. Configure a connection (immutable context)
config = TerminusDB.Config.new(endpoint: "http://localhost:6363")
# 2. Manage databases
{:ok, _} = TerminusDB.Database.create(config, "mydb",
label: "My Database",
comment: "A new database",
schema: true
)
# 3. Scope to a database (for later document work)
config = TerminusDB.Config.with_database(config, "mydb")
All public calls return `{:ok, result}` or `{:error, %TerminusDB.Error{}}`. Each
`!/1`-suffixed variant raises `TerminusDB.Error` instead. Every operation emits
`:telemetry` events (see `TerminusDB.Telemetry`).
"""
@version Mix.Project.config()[:version] || "0.0.0"
@doc """
Returns the library version string.
## Examples
iex> String.match?(TerminusDB.version(), ~r/^\\d+\\.\\d+\\.\\d+/)
true
"""
@spec version() :: String.t()
def version, do: @version
end