An event can have an arbitrary data structure, as long as the reducer understand how to parse it.
Commits contain one or more events. Adapters must return commits in the following format:
Loads all commits for all entities, (optionally) starting from a specific
[ commits ]- an array of commit objects.
Loads all events for a given entity, (optionally) starting from a commit
[ events ]- a flat array of event objects.
append(id, version, events)
Creates a new commit and persists it to the database. Must throw if a commit with the same