From 15a7db9e7133b9650c79a40425d22b47f032720d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Sun, 15 Sep 2019 09:40:53 +0200 Subject: [PATCH] Clean up TenantCannotBeCreatedException --- src/Contracts/StorageDriver.php | 7 ++++--- src/DatabaseManager.php | 9 ++++----- src/StorageDrivers/Database/DatabaseStorageDriver.php | 2 +- src/StorageDrivers/RedisStorageDriver.php | 2 +- src/TenantManager.php | 10 ++-------- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/Contracts/StorageDriver.php b/src/Contracts/StorageDriver.php index 4cdbe203..c0ceec82 100644 --- a/src/Contracts/StorageDriver.php +++ b/src/Contracts/StorageDriver.php @@ -43,12 +43,13 @@ interface StorageDriver public function all(array $ids = []): array; /** - * Check if a tenant can be created. + * Ensure a tenant can be created. * * @param Tenant $tenant - * @return true|TenantCannotBeCreatedException + * @return void + * @throws TenantCannotBeCreatedException */ - public function canCreateTenant(Tenant $tenant); + public function ensureTenantCanBeCreated(Tenant $tenant): void; /** * Get a value from storage. diff --git a/src/DatabaseManager.php b/src/DatabaseManager.php index e8e849b8..9ddc1dc3 100644 --- a/src/DatabaseManager.php +++ b/src/DatabaseManager.php @@ -92,15 +92,14 @@ class DatabaseManager * Check if a tenant can be created. * * @param Tenant $tenant - * @return true|TenantCannotBeCreatedException + * @return void + * @throws TenantCannotBeCreatedException */ - public function canCreate(Tenant $tenant) + public function ensureTenantCanBeCreated(Tenant $tenant): void { if ($this->getTenantDatabaseManager($tenant)->databaseExists($database = $tenant->getDatabaseName())) { - return new TenantDatabaseAlreadyExistsException($database); + throw new TenantDatabaseAlreadyExistsException($database); } - - return true; } public function createDatabase(Tenant $tenant) diff --git a/src/StorageDrivers/Database/DatabaseStorageDriver.php b/src/StorageDrivers/Database/DatabaseStorageDriver.php index 0e875402..6c06ee6d 100644 --- a/src/StorageDrivers/Database/DatabaseStorageDriver.php +++ b/src/StorageDrivers/Database/DatabaseStorageDriver.php @@ -30,7 +30,7 @@ class DatabaseStorageDriver implements StorageDriver ->withDomains(Domains::where('tenant_id', $id)->all()->only('domain')->toArray()); } - public function canCreateTenant(Tenant $tenant) + public function ensureTEnantCanBeCreated(Tenant $tenant) { // todo } diff --git a/src/StorageDrivers/RedisStorageDriver.php b/src/StorageDrivers/RedisStorageDriver.php index 944bd235..93caf54e 100644 --- a/src/StorageDrivers/RedisStorageDriver.php +++ b/src/StorageDrivers/RedisStorageDriver.php @@ -36,7 +36,7 @@ class RedisStorageDriver implements StorageDriver return $this->app[Tenant::class]; } - public function canCreateTenant(Tenant $tenant) + public function ensureTenantCanBeCreated(Tenant $tenant) { // todo } diff --git a/src/TenantManager.php b/src/TenantManager.php index e4098d9e..291633c0 100644 --- a/src/TenantManager.php +++ b/src/TenantManager.php @@ -83,14 +83,8 @@ class TenantManager */ public function ensureTenantCanBeCreated(Tenant $tenant): void { - // todo move the "throw" responsibility to the canCreateTenant methods? - if (($e = $this->storage->canCreateTenant($tenant)) instanceof TenantCannotBeCreatedException) { - throw new $e; - } - - if (($e = $this->database->canCreateTenant($tenant)) instanceof TenantCannotBeCreatedException) { - throw new $e; - } + $this->storage->ensureTenantCanBeCreated($tenant); + $this->database->ensureTenantCanBeCreated($tenant); } public function updateTenant(Tenant $tenant): self