Laravel Enhanced Pipeline
Laravel Pipeline with DB transaction support, events and additional methods
#StandWithUkraine
Installation
Install the package using composer:
composer require michael-rubel/laravel-enhanced-pipeline
Usage
Import modified pipeline to your class:
use MichaelRubel\EnhancedPipeline\Pipeline;
Then you can make the pipeline:
Pipeline::make()
->withEvents()
->withTransaction()
->send($data)
->through([
// your pipes
])
->onFailure(function ($data, $exception) {
// do something when exception caught
return $data;
})->then(function ($data) {
// do something when all pipes completed their work
return $data;
});
You can use the pipeline
helper:
pipeline($data, [
// pipes
])->thenReturn();
You can as well instantiate the pipeline using IoC or manually:
app(Pipeline::class)
...
(new Pipeline(app()))
...
(new Pipeline)
->setContainer(app())
...
If you want to override the original Pipeline resolved through IoC Container, you can add binding in the ServiceProvider register
method:
$this->app->singleton(\Illuminate\Pipeline\Pipeline::class, \MichaelRubel\EnhancedPipeline\Pipeline::class);
Transaction
Usage of withTransaction
method will enable a manual DB transaction
throughout the pipeline execution.
Events
Usage of withEvents
method will enable Laravel Events
throughout the pipeline execution.
Available events
PipeStarted
- fired before execution of pipe;PipePassed
- fired after execution of pipe.
Testing
composer test
Credits
- chefhasteeth for base implementation of DB transaction in Pipeline.
- rezaamini-ir for inspiration to create a pipeline with
onFailure
method. See #PR
License
The MIT License (MIT). Please see License File for more information.