- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
37 lines
897 B
PHP
37 lines
897 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\EventSourcing\Demo;
|
|
|
|
use App\Framework\EventSourcing\AggregateId;
|
|
use App\Framework\EventSourcing\AggregateRoot;
|
|
|
|
final readonly class DemoAggregate
|
|
{
|
|
public function __construct(
|
|
public AggregateRoot $root,
|
|
) {
|
|
}
|
|
|
|
public static function create(AggregateId $aggregateId, DemoAggregateDomainId $id): self
|
|
{
|
|
$root = new AggregateRoot(new AggregateState(), $aggregateId);
|
|
$root->eventRecorder->record(new DemoAggregateEvent($id));
|
|
|
|
return new self($root);
|
|
}
|
|
|
|
public static function rehydrate(AggregateId $id, iterable $events): self
|
|
{
|
|
$root = AggregateRoot::rehydrate($id, new AggregateState(), $events);
|
|
|
|
return new self($root);
|
|
}
|
|
|
|
public function eventHappened(DemoAggregateEvent $event): void
|
|
{
|
|
$this->root->applyAndRecord($event);
|
|
}
|
|
}
|