AshArcadic.DataLayer (AshArcadic v0.1.0)

Copy Markdown View Source

Ash DataLayer for ArcadeDB — the "ash_postgres of ArcadeDB". Executes through the tenant-blind arcadic transport. Exposes an arcade do … end resource section and implements the Ash.DataLayer behaviour.

use Ash.Resource, data_layer: AshArcadic.DataLayer

arcade do
  client MyApp.ArcadicClient   # module implementing AshArcadic.Client
  label :Person                # defaults to the short module name
  skip [:computed]
  sensitive [:ssn]             # binary-storage-typed or skipped
  # database "my_db"           # per-resource default (non-:context)
  # tenant_database {MyApp.Tenancy, :db_for, []}  # :context override
end

Advertised capabilities (see can?/2 for the authoritative matrix): CRUD + MERGE upserts + atomic SET, bulk writes (bulk_create, multi-row bulk upsert, heterogeneous update_many, query-scoped update_query/ destroy_query), filter/sort/distinct/combinations push-down, offset + keyset pagination (Ash.stream!), query + relationship aggregates, expression calculations, standard relationships + Traverse manual traversal + edge writes, dense/sparse/hybrid vector search, transactions, :async_engine, telemetry. Multitenancy (:attribute + :context) is fail-closed on every path; errors are value-free (no value, tenant, or byte in a message). Per-feature fine print: usage-rules.md.

Summary

Functions

arcade(body)

(macro)

gated_query(conn, cypher, params)

write_command(conn, cypher, params)