albertoarena / laravel-event-sourcing-generator
Laravel event sourcing domain generator
Requires
- php: ^8.2
- aldemeery/onion: ^1.0
- illuminate/contracts: *
- illuminate/support: *
- nikic/php-parser: ^5.1
- spatie/laravel-event-sourcing: ^7.9
Requires (Dev)
- jaschilz/php-coverage-badger: ^2.0
- larastan/larastan: ^2.9
- laravel/pint: ^1.1
- orchestra/testbench: ^9.0
- php-mock/php-mock-mockery: ^1.4
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.4
- dev-main
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.1.27
- v0.1.26
- v0.1.25
- v0.1.24
- v0.1.23
- v0.1.22
- v0.1.21
- v0.1.20
- v0.1.19
- v0.1.18
- v0.1.17
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-dependabot/composer/league/commonmark-2.6.0
This package is auto-updated.
Last update: 2024-12-21 12:47:19 UTC
README
Laravel event sourcing generator adds a new Artisan command that can generate a full domain directory structure for Spatie event sourcing.
Table of Contents
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Feel free to fork, improve and create a pull request.
Please see CONTRIBUTING for details.
Installation
Compatibility
(*) Package has been tested in Laravel 10, even it is not officially released for that version.
Install
composer require albertoarena/laravel-event-sourcing-generator
Usage
php artisan make:event-sourcing-domain <model>
[-d|--domain=<domain>] # The name of the domain
[--namespace=<namespace>] # The namespace or root folder (default: "Domain")
[-m|--migration=<existing_migration_filename>] # Indicate any existing migration for the model, with or without timestamp prefix
[-a|--aggregate=<0|1>] # Indicate if aggregate must be created or not (accepts 0 or 1)
[-r|--reactor=<0|1>] # Indicate if reactor must be created or not (accepts 0 or 1)
[-u|--unit-test] # Indicate if PHPUnit tests must be created
[-p|--primary-key=<uuid|id>] # Indicate which is the primary key (uuid, id)
[--indentation=<indent>] # Indentation spaces
[--failed-events=<0|1>] # Indicate if failed events must be created (accepts 0 or 1)
[--notifications=<mail,no,slack,teams>] # Indicate if notifications must be created, comma separated (accepts mail,no,slack,teams)
[--root=<root> # The name of the root folder (default: "app")
Show help
php artisan help make:event-sourcing-domain
Basic usage
Documentation about basic usage
Generate a model with same name of the domain
php artisan make:event-sourcing-domain Animal \ --domain=Animal
Generate a model with different domain
Read documentation with examples
php artisan make:event-sourcing-domain Tiger \ --domain=Animal
Generate a model with different domain and namespace
Read documentation with examples
php artisan make:event-sourcing-domain Tiger \ --domain=Animal \ --namespace=CustomDomain
Generate a model from existing migration
Read documentation with examples
php artisan make:event-sourcing-domain Animal \ --migration=create_animal_table \ --unit-test
Generate a model from existing migration with PHPUnit tests
php artisan make:event-sourcing-domain Animal \ --migration=create_animal_table \ --unit-test
Generate a model from existing migration with failed events and mail / Slack notifications
php artisan make:event-sourcing-domain Animal \ --migration=create_animal_table \ --failed-events=1 \ --notifications=mail,slack
Domain and namespace
Read documentation about directory structure
Specify the name of the domain
Read documentation with examples
php artisan make:event-sourcing-domain Animal --domain=Tiger php artisan make:event-sourcing-domain Animal --domain=Lion
Specify the namespace
Read documentation with examples
php artisan make:event-sourcing-domain Tiger --namespace=MyDomain --domain=Animal
Advanced usage
Set primary key
Read documentation with examples
Default primary key is uuid
. That will work with Aggregate class.
It is possible to use id
as primary key:
php artisan make:event-sourcing-domain Animal --primary-key=id
When importing migrations, primary key will be automatically loaded from file.
Generate PHPUnit tests
Read documentation with examples
php artisan make:event-sourcing-domain Animal --unit-test
Generate aggregates
Read documentation with examples
php artisan make:event-sourcing-domain Animal --aggregate=1
This is available only for models using uuid
as primary key.
Generate reactors
Read documentation with examples
php artisan make:event-sourcing-domain Animal --reactor=1
Generate failed events
Read documentation with examples
php artisan make:event-sourcing-domain Animal --failed-events=1
Generate notifications
Read documentation with examples
php artisan make:event-sourcing-domain Animal --notifications=<NOTIFICATIONS>
Specify indentation
Read documentation with examples
php artisan make:event-sourcing-domain Animal --indentation=2
Specify the path of root folder
Read documentation with examples
php artisan make:event-sourcing-domain Animal --root=src
Limitations and future enhancements
Blueprint column types
Future enhancements
- support migrations that update table (see documentation)
- support PHP 8.3