2017 © Pedro Peláez
 

library event-sourcing

An EventSourcing Package

image

robin-malfait/event-sourcing

An EventSourcing Package

  • Sunday, October 30, 2016
  • by RobinMalfait
  • Repository
  • 3 Watchers
  • 6 Stars
  • 110 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 23 Versions
  • 0 % Grown

The README.md

EventSourcing

Software License , (*1)

This is a simple EventSourcing package that you can use in your projects. This project is written using PSR2, (*2)

Install

Via Composer, (*3)

``` bash $ composer require robin-malfait/event-sourcing, (*4)


## Usage Register the service provider ``` php 'providers' => [ ... \EventSourcing\Laravel\EventSourcingServiceProvider::class, ]

Publish the configuration file, (*5)

``` php php artisan vendor:publish --provider="EventSourcing\Laravel\EventSourcingServiceProvider", (*6)


The config file looks like this: [Config File](src/Laravel/Config/event_sourcing.php) You can now tweak some configurations Last but not least make the event store table:

php artisan event-sourcing:table, (*7)


## Update v1 to v2 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. ### For Example: ```php <?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., (*8)

In your database rename eventstore to eventstore_backup, (*9)

Now you can run the following command in your terminal:, (*10)

php artisan event-sourcing:table

This will create the eventstore, now you should see 2 tables in your database, (*11)

  1. eventstore_backup => Your old table with all data in
  2. eventstore => Your new empty table

I also have written a helper method to do the migration now., (*12)

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., (*13)

php artisan event-sourcing:1to2

Testing

bash $ composer test, (*14)

Contributing

Please see CONTRIBUTING for details., (*15)

Security

If you discover any security related issues, please email malfait.robin@gmail.com instead of using the issue tracker., (*16)

Credits

License

The MIT License (MIT). Please see License File for more information., (*17)

The Versions

30/10 2016