Package Data | |
---|---|
Maintainer Username: | RobinMalfait |
Maintainer Contact: | malfait.robin@gmail.com (Robin Malfait) |
Package Create Date: | 2015-06-13 |
Package Last Update: | 2016-10-30 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-14 15:11:24 |
Package Statistics | |
---|---|
Total Downloads: | 124 |
Monthly Downloads: | 1 |
Daily Downloads: | 0 |
Total Stars: | 7 |
Total Watchers: | 4 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This is a simple EventSourcing package that you can use in your projects. This project is written using PSR2
Via Composer
$ composer require robin-malfait/event-sourcing
Register the service provider
'providers' => [
...
\EventSourcing\Laravel\EventSourcingServiceProvider::class,
]
Publish the configuration file
php artisan vendor:publish --provider="EventSourcing\Laravel\EventSourcingServiceProvider"
The config file looks like this:
You can now tweak some configurations
Last but not least make the event store table:
php artisan event-sourcing:table
If you are still using the first version you better update to version 2. You will have less problems in the future, I promise.
In Version 2 we give each DomainEvent the responsibility to give data and receive data. Those methods are
serialize();
Which returns an array of serialized data
deserialize(array $data);
Which has a parameter with the data that basically comes from the serialize method. This method should also return an instance of the current event.
<?php namespace App\Users\Events;
use EventSourcing\Domain\DomainEvent;
class UserWasRegistered implements DomainEvent
{
private $user_id;
private $email;
private $password; // Yes, this is encrypted
public function __construct($user_id, $email, $password)
{
$this->user_id = $user_id;
$this->email = $email;
$this->password = $password;
}
/**
* @return UserId
*/
public function getAggregateId()
{
return $this->user_id;
}
public function getMetaData()
{
return []; // Could be for example the logged in user, ...
}
/**
* @return array
*/
public function serialize()
{
return [
'user_id' => $this->user_id,
'email' => $this->email,
'password' => $this->password
];
}
/**
* @param array $data
* @return mixed
*/
public static function deserialize(array $data)
{
return new static(
$data['user_id'],
$data['email'],
$data['password']
);
}
}
Once you have defined every serialize / deserialize method in your events you can start the migration process.
In your database rename eventstore
to eventstore_backup
Now you can run the following command in your terminal:
php artisan event-sourcing:table
This will create the eventstore, now you should see 2 tables in your database
eventstore_backup
=> Your old table with all data ineventstore
=> Your new empty tableI also have written a helper method to do the migration now.
php artisan event-sourcing:1to2 eventstore_backup eventstore
Or you can also just run the following command because eventstore_backup and eventstore are the defaults.
php artisan event-sourcing:1to2
$ composer test
Please see CONTRIBUTING for details.
If you discover any security related issues, please email malfait.robin@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.