- Projectors should not implement the
Projector
interface anymore. Instead, they should extend fromSpatie\EventSourcing\EventHandlers\Projectors\Projector
class. You don't need the use theProjectsEvents
trait anymore, as it's already applied on the base class. - The
QueuedProjector
interface does not exist anymore. If you want to queue a projector you should let it implement the marker interfacelluminate\Contracts\Queue\ShouldQueue
. - Reactors should not implement
EventHandler
anymore. Instead, they should extend fromSpatie\EventSourcing\EventHandlers\Reactors\Reactor
. In previous versions all reactors where called asynchronously via a job. If you want to keep that behavior (in most cases you'll want this), you should also let the reactor implementlluminate\Contracts\Queue\ShouldQueue
. - All classes that revolve around the concept of stored events have been moved to the
Spatie\EventSourcing\StoredEvents
namespace. If you are using any of those classes, take a look inside the source code of the package what the new namespace is. - Aggregate roots are now in a dedicated separate namespace
Spatie\EventSourcing\AggregateRoots
. You should update all aggregate roots and fake aggregate roots to this namespace. - The
ShouldBeStored
interface is now an abstract base class. In all your events you should extend it now, instead of implementing it - the
reset
method has been removed on projectors, useresetState
instead - the
fake
method on an aggregate root now accepts a uuid instead of an array of events. Usegiven
to pass the events you are now passing tofake
- the variable used to accept the event in the apply methods on aggregates is required to be named
$event
- Add an
aggregate_version
property to thestored_events
table$table->unsignedInteger('aggregate_version')->nullable();
- Republish the migrations or copy the
create_snapshots_table
migration - The
StoredEventRepository
interface has new methods calledretrieveAllAfterVersion
andgetLatestVersion
that you must implement if you have a custom repository - The
StoredEventRepository
now accepts anaggregateVersion
parameter in thepersist
andpersistMany
methods - The
StoredEventRepository
has a newcountAllStartingFrom
method
Nothing changed, expect that where possible property types and short closures are used
The only change in this version is the naming change from laravel-event-projector
to laravel-event-sourcing
. There are no changes to the API.
To upgrade from v3 of laravel-event-projector
you have to perform these steps:
- Merge the
config/event-projector.php
withvendor/spatie/laravel-event-sourcing/config/event-sourcing.php
- Rename
config/event-projector.php
toconfig/event-sourcing.php
- Change
laravel-event-projector:v3
tolaravel-event-sourcing:v1
and runcomposer update
- The namespace has changed, so you need to replace
Spatie\EventProjector
bySpatie\EventSourcing
in your entire project