Snapshot tool for the prooph event-store. Take aggregate snapshots with ease.
composer require prooph/snapshotter
There are two projections shipped with this package:
Use this one, if you are using one stream per aggregate, so when you have two users with ids 123 and 234 the event
streams are named user-123 and user-234, in this case you need to create the snapshots by querying the category user.
Use this one, if you are using one stream for all aggregates, so when you have two users with ids 123 and 234 the event
stream is simply user for both of them, in this case you need to create the snapshots by querying the stream user.
You need to create a simple script, that might look similar to this and run it in background. With the help of docker-containers or supervisord you can keep the script alive, if it dies.
<?php
$container = include 'container.php';
$projectionManager = $container->get(\Prooph\EventStore\Projection\ProjectionManager::class);
$projection = $projectionManager->createReadModelProjection(
'user-snapshots',
new \Prooph\Snapshotter\SnapshotReadModel(
$container->get('user_repository'),
new \Prooph\EventSourcing\EventStoreIntegration\AggregateTranslator(),
$container->get(\Prooph\SnapshotStore\SnapshotStore::class),
[
'user',
]
)
);
$categorySnapshotProjection = new \Prooph\Snapshotter\CategorySnapshotProjection($projection, 'user');
$categorySnapshotProjection();
// or
$streamSnapshotProjection = new \Prooph\Snapshotter\StreamSnapshotProjection($projection, 'user');
$streamSnapshotProjection();