Download the PHP package genesisdb/neos-genesisdb without Composer
On this page you can find all versions of the php package genesisdb/neos-genesisdb. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download genesisdb/neos-genesisdb
More information about genesisdb/neos-genesisdb
Files in genesisdb/neos-genesisdb
Package neos-genesisdb
Short Description GenesisDB for Neos Flow, a wrapper around the official GenesisDB PHP client
License MIT
Homepage https://www.genesisdb.io
Informations about the package neos-genesisdb
GenesisDB for Neos Flow
Use GenesisDB, the open source event sourcing database, in Neos and Flow. The package wraps the official GenesisDB PHP client in a configurable Flow singleton.
Version 2.0.0 targets GenesisDB 2.0 and the 2.0 PHP client. Configuration keys, type names and method names have changed, see Upgrading from 1.x. Existing 1.x installations keep working against a GenesisDB 2.0 server, which still serves the unchanged 1.x API under
/api/v1.
Requirements: PHP 8.2+, Neos Flow 8 or 9, GenesisDB 2.0.
Installation
Configuration
urlandauthTokenfall back to theGENESISDB_URLandGENESISDB_AUTH_TOKENenvironment variables when empty.- GenesisDB 2.0 requires tokens of at least 32 bytes, generate one with
openssl rand -hex 32. Keep tokens out of version control. timeoutapplies to non-streaming calls in seconds. Subscriptions never time out.
Usage
All types come from the PHP client in the GenesisDB namespace: NewEvent, Event, FetchOptions, Precondition, Status and the exceptions.
Commit events
A subject with a single segment such as /customer gets a generated ID appended.
Fetch events
Subscribe
Query with GDBQL
See the GDBQL reference.
Preconditions
Preconditions are checked atomically with the commit. A failed precondition throws PreconditionFailedException and writes nothing.
Precondition::isSubjectExisting('/user/456') holds when the subject or a descendant has events.
Personal data and erasure
Erasure covers reference payloads only. Do not put personal data in subjects, types or sources.
Schemas
Catalog, status and audit
For anything the service does not wrap, $this->genesisDb->client() returns the underlying GenesisDB\Client.
Upgrading from 1.x
| 1.x | 2.0 |
|---|---|
apiUrl |
url |
apiVersion |
removed, the client always uses API v2 |
authToken |
authToken, now at least 32 bytes |
streamEvents() |
fetch() |
observeEvents() |
subscribe() |
commitEvents() |
commit(), returns the stored events |
q(), queryEvents() |
query() |
eraseData() |
erase() |
GenesisDB\GenesisDB\CommitEvent |
GenesisDB\NewEvent |
GenesisDB\GenesisDB\StreamOptions |
GenesisDB\FetchOptions |
CommitEventOptions(storeDataAsReference: true) |
->asReference() |
Precondition::generic() |
removed |
GenesisDB 2.0 itself migrates an existing data directory on first start. The migration is one-way, so a backup of the data directory before upgrading is mandatory. See Upgrade from 1.x.
License
MIT, see LICENSE.