From 74fbd816c25cb111d6d7a3b1c5c3b5c720bd1184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Wed, 16 Oct 2019 08:56:33 +0200 Subject: [PATCH] wip --- src/DatabaseManager.php | 8 ++++++-- src/TenantManager.php | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/DatabaseManager.php b/src/DatabaseManager.php index c36b51fa..6d90f218 100644 --- a/src/DatabaseManager.php +++ b/src/DatabaseManager.php @@ -126,17 +126,21 @@ class DatabaseManager * Create a database for a tenant. * * @param Tenant $tenant + * @param ShouldQueue[]|callable[] $afterCreating * @return void */ - public function createDatabase(Tenant $tenant) + public function createDatabase(Tenant $tenant, array $afterCreating = []) { $database = $tenant->getDatabaseName(); $manager = $this->getTenantDatabaseManager($tenant); if ($this->app['config']['tenancy.queue_database_creation'] ?? false) { - QueuedTenantDatabaseCreator::dispatch($manager, $database); + QueuedTenantDatabaseCreator::withChain($afterCreating)->dispatch($manager, $database); } else { $manager->createDatabase($database); + foreach ($afterCreating as $callback) { + $callback(); + } } } diff --git a/src/TenantManager.php b/src/TenantManager.php index 9e2f2c6d..f5fcb7a7 100644 --- a/src/TenantManager.php +++ b/src/TenantManager.php @@ -62,18 +62,26 @@ class TenantManager $this->ensureTenantCanBeCreated($tenant); $this->storage->createTenant($tenant); - $this->database->createDatabase($tenant); - + + $afterCreating = []; if ($this->shouldMigrateAfterCreation()) { if ($this->shouldQueueMigration()) { - QueuedTenantDatabaseMigrator::dispatch($tenant); + $afterCreating = [ + new QueuedTenantDatabaseMigrator($tenant), + ]; } else { - $this->artisan->call('tenants:migrate', [ - '--tenants' => [$tenant['id']], - ]); + $afterCreating = [ + function () use ($tenant) { + $this->artisan->call('tenants:migrate', [ + '--tenants' => [$tenant['id']], + ]); + }, + ]; } } + $this->database->createDatabase($tenant, $afterCreating); + return $this; }