[ JobPipeline::make([ CreateDatabase::class, MigrateDatabase::class, // triggers DatabaseMigrated event SeedDatabase::class, ])->send(function (TenantCreated $event) { return $event->tenant; })->queue(true), ], DatabaseCreated::class => [], DatabaseMigrated::class => [], DatabaseSeeded::class => [], TenantDeleted::class => [ JobPipeline::make([ DeleteDatabase::class, ])->send(function (TenantDeleted $event) { return $event->tenant; })->queue(true), // DeleteStorage::class, ], DatabaseDeleted::class => [], ]; } public function register() { // } public function boot() { $this->bootEvents(); // } protected function bootEvents() { foreach ($this->events() as $event => $listeners) { foreach (array_unique($listeners) as $listener) { if ($listener instanceof JobPipeline) { $listener = $listener->toClosure(); } Event::listen($event, $listener); } } } }