Liking cljdoc? Tell your friends :D

eacl.datomic.backend

Datomic's storage-specific implementation of the shared v8 snapshot adapter. Authorization graph algorithms remain outside this namespace.

Datomic's storage-specific implementation of the shared v8 snapshot
adapter. Authorization graph algorithms remain outside this namespace.
raw docstring

eacl.datomic.core

Datomic-backed EACL authorization views.

Public reads, writes, consistency, caching, pagination, and lifecycle are implemented once by eacl.client.orchestration. This namespace contributes only Datomic's basis adapter, basis source, writer primitives, schema operations, explicit speculative application, and Datomic-specific utilities.

Datomic-backed EACL authorization views.

Public reads, writes, consistency, caching, pagination, and lifecycle are
implemented once by `eacl.client.orchestration`. This namespace contributes
only Datomic's basis adapter, basis source, writer primitives, schema
operations, explicit speculative application, and Datomic-specific utilities.
raw docstring

eacl.datomic.impl.base

EACL: Enterprise Access Control. Spice-compatible authorization system in Datomic.

EACL: Enterprise Access Control. Spice-compatible authorization system in Datomic.
raw docstring

eacl.datomic.impl.indexed

Compatibility façade over Datomic storage primitives and the shared v8 authorization engine. No authorization traversal is implemented here.

Compatibility façade over Datomic storage primitives and the shared v8
authorization engine. No authorization traversal is implemented here.
raw docstring

eacl.datomic.integrity

Explicit, offline integrity diagnostics.

Nothing in this namespace runs on EACL's authorization hot path. Callers choose when to pay for a database scan or a schema-version read.

Explicit, offline integrity diagnostics.

Nothing in this namespace runs on EACL's authorization hot path. Callers
choose when to pay for a database scan or a schema-version read.
raw docstring

eacl.datomic.qualifiers

Certified inline native tuple-ref publication for non-serving staging.

Certified inline native tuple-ref publication for non-serving staging.
raw docstring

eacl.datomic.safe-retraction

Optional target-only Datomic transaction function for cache-coherent native entity retraction and EACL relationship peer cleanup.

Optional target-only Datomic transaction function for cache-coherent native
entity retraction and EACL relationship peer cleanup.
raw docstring

eacl.migrations.v6-to-v7

One-time migration from EACL v6 relationship storage to the v7 tuple model.

v6 stored one Datomic entity per relationship (7 datoms across :eacl.relationship/* attributes). v7 stores each relationship as two cardinality-many tuple datoms asserted directly on your domain entities:

[:db/add <subject-eid> :eacl.v7.relationship/subject-type+relation+resource-type+resource [<subject-type> <relation-eid> <resource-type> <resource-eid>]] [:db/add <resource-eid> :eacl.v7.relationship/resource-type+relation+subject-type+subject [<resource-type> <relation-eid> <subject-type> <subject-eid>]]

where <relation-eid> refers to the Relation schema entity, not the relation name keyword.

Entry points:

  • migrate! runs the whole migration end-to-end (see its docstring for the exact steps). It is idempotent and converges storage forward: verified v7 tuples replace the v6 relationship entities in the same run.
  • assert-storage-compatible! is a read-only legacy-source diagnostic. Ordinary clients require the subsequent storage 7-to-8 migration.

Flat v6 permissions are converted once to canonical expression entities. Pass your SpiceDB schema string as {:schema ...} to validate and replace the stored schema from source. Without it, migrate! deterministically converts the stored union-only rows. normalize-schema-entity-ids! first gives legacy schema entities the canonical :eacl/id handles the replacement needs.

Full walkthrough and edge cases: docs/migration-v6-to-v7.md.

One-time migration from EACL v6 relationship storage to the v7 tuple model.

v6 stored one Datomic entity per relationship (7 datoms across
:eacl.relationship/* attributes). v7 stores each relationship as two
cardinality-many tuple datoms asserted directly on your domain entities:

  [:db/add <subject-eid>  :eacl.v7.relationship/subject-type+relation+resource-type+resource
   [<subject-type> <relation-eid> <resource-type> <resource-eid>]]
  [:db/add <resource-eid> :eacl.v7.relationship/resource-type+relation+subject-type+subject
   [<resource-type> <relation-eid> <subject-type> <subject-eid>]]

where <relation-eid> refers to the Relation schema entity, not the relation
name keyword.

Entry points:
- `migrate!` runs the whole migration end-to-end (see its docstring for the
  exact steps). It is idempotent and converges storage forward: verified v7
  tuples replace the v6 relationship entities in the same run.
- `assert-storage-compatible!` is a read-only legacy-source diagnostic.
  Ordinary clients require the subsequent storage 7-to-8 migration.


Flat v6 permissions are converted once to canonical expression entities.
Pass your SpiceDB schema string as {:schema ...} to validate and replace the
stored schema from source. Without it, migrate! deterministically converts
the stored union-only rows. `normalize-schema-entity-ids!` first gives
legacy schema entities the canonical :eacl/id handles the replacement needs.

Full walkthrough and edge cases:
docs/migration-v6-to-v7.md.
raw docstring

eacl.migrations.v7-to-v8

Permission-only released-v7 to v8 upgrade.

Relationship storage upgrades are a separate maintenance step. This namespace never enumerates or rewrites them; only bounded schema-definition rows are read and one atomic permission replacement is submitted.

Permission-only released-v7 to v8 upgrade.

Relationship storage upgrades are a separate maintenance step. This
namespace never enumerates or rewrites them; only bounded schema-definition
rows are read and one atomic permission replacement is submitted.
raw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close