robin-malfait/event-sourcing

v3.0.3 2016-10-30 12:43 UTC

README

Software License

这是一个简单的EventSourcing包,您可以在项目中使用。该项目使用PSR2编写

安装

通过Composer

$ composer require robin-malfait/event-sourcing

使用方法

注册服务提供者

'providers' => [
    ...
    \EventSourcing\Laravel\EventSourcingServiceProvider::class,
]

发布配置文件

php artisan vendor:publish --provider="EventSourcing\Laravel\EventSourcingServiceProvider"

配置文件看起来像这样

配置文件

现在您可以调整一些配置

最后但同样重要的是,创建事件存储表

php artisan event-sourcing:table

从v1更新到v2

如果您仍在使用第一个版本,最好更新到版本2。我保证您在未来的问题会少一些。

在版本2中,我们让每个DomainEvent负责提供数据和接收数据。这些方法是

serialize(); 返回一个序列化数据的数组

deserialize(array $data); 该方法有一个参数,数据基本上来自序列化方法。此方法也应返回当前事件的实例。

例如

<?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']
        );
    }
}

一旦您在事件中定义了每个序列化/反序列化方法,您就可以开始迁移过程。

在数据库中将 eventstore 重命名为 eventstore_backup

现在您可以在终端中运行以下命令

php artisan event-sourcing:table

这将创建eventstore,现在您应该能在数据库中看到两个表

  1. eventstore_backup => 包含所有数据的旧表
  2. eventstore => 您的新

我还编写了一个辅助方法来进行迁移。

php artisan event-sourcing:1to2 eventstore_backup eventstore

或者您也可以直接运行以下命令,因为 eventstore_backupeventstore 是默认的。

php artisan event-sourcing:1to2

测试

$ composer test

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件malfait.robin@gmail.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件