From 08319695b9a50b0c302e3ce5f1dbfd7c6e33e2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Sun, 8 Sep 2019 15:51:48 +0200 Subject: [PATCH] Improve DatabaseManager create & delete fns code --- src/DatabaseManagerv2.php | 36 +++++++++---------- .../DatabaseManagerNotRegisteredException.php | 4 +-- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/DatabaseManagerv2.php b/src/DatabaseManagerv2.php index 27e419bf..79532121 100644 --- a/src/DatabaseManagerv2.php +++ b/src/DatabaseManagerv2.php @@ -7,6 +7,7 @@ namespace Stancl\Tenancy; use Illuminate\Foundation\Application; use Stancl\Tenancy\Jobs\QueuedTenantDatabaseCreator; use Illuminate\Database\DatabaseManager as BaseDatabaseManager; +use Stancl\Tenancy\Exceptions\DatabaseManagerNotRegisteredException; class DatabaseManagerv2 { @@ -100,16 +101,8 @@ class DatabaseManagerv2 public function createDatabase(Tenant $tenant) { $database = $tenant->getDatabaseName(); - $connection = $tenant->getConnectionName(); // todo - $driver = $this->getDriver($connection); + $manager = $this->getTenantDatabaseManager($tenant); - $databaseManagers = $this->app['config']['tenancy.database_managers']; - - if (! \array_key_exists($driver, $databaseManagers)) { - throw new DatabaseManagerNotRegisteredException('Database could not be created', $driver); - } - - $manager = $databaseManagers[$driver]; if ($this->app['config']['tenancy.queue_database_creation'] ?? false) { QueuedTenantDatabaseCreator::dispatch($this->app[$manager], $database, 'create'); } else { @@ -117,24 +110,29 @@ class DatabaseManagerv2 } } - // todo this is the same as createDatabase. find a way to remove duplicite code public function deleteDatabase(Tenant $tenant) { $database = $tenant->getDatabaseName(); - $connection = $tenant->getConnectionName(); // todo - $driver = $this->getDriver($connection); + $manager = $this->getTenantDatabaseManager($tenant); - $databaseManagers = $this->app['config']['tenancy.database_managers']; - - if (! \array_key_exists($driver, $databaseManagers)) { - throw new DatabaseManagerNotRegisteredException('Database could not be deleted', $driver); - } - - $manager = $databaseManagers[$driver]; if ($this->app['config']['tenancy.queue_database_creation'] ?? false) { QueuedTenantDatabaseCreator::dispatch($this->app[$manager], $database, 'delete'); } else { return $this->app[$manager]->deleteDatabase($database); } } + + protected function getTenantDatabaseManager(Tenant $tenant) + { + $connection = $tenant->getConnectionName(); // todo + $driver = $this->getDriver($connection); + + $databaseManagers = $this->app['config']['tenancy.database_managers']; + + if (! \array_key_exists($driver, $databaseManagers)) { + throw new DatabaseManagerNotRegisteredException($driver); + } + + return $databaseManagers[$driver]; + } } diff --git a/src/Exceptions/DatabaseManagerNotRegisteredException.php b/src/Exceptions/DatabaseManagerNotRegisteredException.php index e992ccd3..8af2f5e1 100644 --- a/src/Exceptions/DatabaseManagerNotRegisteredException.php +++ b/src/Exceptions/DatabaseManagerNotRegisteredException.php @@ -6,8 +6,8 @@ namespace Stancl\Tenancy\Exceptions; class DatabaseManagerNotRegisteredException extends \Exception { - public function __construct($error, $driver) + public function __construct($driver) { - $this->message = "$error: no database manager for driver $driver is registered."; + $this->message = "Database manager for driver $driver is not registered."; } }